sklearn.cluster.KMeans(n_clusters=8)
fit_predict计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x),然后再调用predict(x)
随机创建不同二维数据集作为训练集,并结合k-means算法将其聚类,你可以尝试分别聚类不同数量的簇,并观察聚类效果:
聚类参数n_cluster传值不同,得到的聚类结果不同
导入需要的包
import matplotlib.pyplot as plt # 注意make_blobs的导入形式 from sklearn.datasets import make_blobs from sklearn.cluster import KMeans # 注意是harabasz而不是harabaz from sklearn.metrics import calinski_harabasz_score
1.创建数据集
# 创建数据集 # X为样本特征,Y为样本簇类别, 共1000个样本,每个样本4个特征,共4个簇, # 簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分别为[0.4, 0.2, 0.2, 0.2] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std=[0.4, 0.2, 0.2, 0.2], random_state=9) # 数据集可视化 plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show()
2.使用k-means进行聚类,并使用CH方法评估
#k-means训练,且可视化 # 分别尝试n_cluses=2\3\4,然后查看聚类效果 y_pred = KMeans(n_clusters=4, random_state=9).fit_predict(X) plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.show()
3.用Calinski-Harabasz Index评估的聚类分数
print(calinski_harabaz_score(X, y_pred))