'AgglomerativeClustering' object has no attribute 'distances_'
时间: 2023-06-22 15:39:12 浏览: 418
解决运行出现dict object has no attribute has_key问题
5星 · 资源好评率100%
非常抱歉,之前的代码有误。`AgglomerativeClustering` 模型没有 `distances_` 属性,因此代码会出现错误。
下面是修改后的代码,使用 `scipy` 库中的 `linkage` 函数计算样本点之间的距离,并将其传递给 `dendrogram` 函数。
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs
from scipy.cluster.hierarchy import dendrogram, linkage
# 生成随机数据集
X, y = make_blobs(n_samples=50, centers=3, random_state=42)
# 创建聚合聚类模型
model = AgglomerativeClustering(n_clusters=3)
# 拟合数据
model.fit(X)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=model.labels_, cmap='rainbow')
plt.show()
# 计算距离矩阵
dist_matrix = linkage(X, method='ward')
# 绘制树状图
plt.title('Hierarchical Clustering Dendrogram')
dendrogram(dist_matrix)
plt.xlabel("Number of points in node (or index of point if no parenthesis).")
plt.show()
```
在新的代码中,我们使用 `linkage` 函数计算样本点之间的距离矩阵,并将其传递给 `dendrogram` 函数进行绘制。`method='ward'` 表示使用 Ward 方式计算距离矩阵。最后,我们得到了与之前类似的聚类结果和树状图。
阅读全文