分裂聚类对鸢尾花数据集进行聚类代码
时间: 2023-07-05 19:25:29 浏览: 105
以下是使用分裂聚类(Bisecting K-Means)对鸢尾花数据集进行聚类的Python代码:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import numpy as np
iris = load_iris()
X = iris.data
# 定义分裂聚类函数
def bisecting_kmeans(X, Kmax):
# 初始化最优聚类结果和SSE
best_labels, best_SSE = None, np.inf
# 对K=1到Kmax进行聚类
for k in range(1, Kmax+1):
# 使用K-Means进行聚类
kmeans = KMeans(n_clusters=k, random_state=0).fit(X)
# 计算SSE
SSE = kmeans.inertia_
# 如果当前聚类结果的SSE更小,则更新最优聚类结果和SSE
if SSE < best_SSE:
best_labels, best_SSE = kmeans.labels_, SSE
return best_labels
# 调用分裂聚类函数
labels = bisecting_kmeans(X, Kmax=3)
# 输出聚类结果
print(labels)
```
在这个代码中,我们首先加载鸢尾花数据集,并将数据存储在X变量中。然后,我们定义了一个bisecting_kmeans()函数,该函数接受数据和最大聚类数Kmax作为输入,并返回最优聚类结果。该函数使用K-Means算法对1到Kmax进行聚类,然后选取SSE最小的聚类结果作为最优结果。
最后,我们调用bisecting_kmeans()函数并将结果存储在变量labels中,然后输出聚类结果。该结果是一个长度为150的数组,其中每个元素表示对应样本所属的聚类编号。
阅读全文