聚类算法2-聚类算法api初步使用

1 api介绍

sklearn.cluster.KMeans(n_clusters=8)

  • 参数:
    • n_clusters:开始的聚类中心数量,产生的质心数。
  • 方法:
    • estimator.fit(x)
    • estimator.predict(x)
    • estimator.fit_predict(x)

fit_predict计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x),然后再调用predict(x)

2 案例

随机创建不同二维数据集作为训练集,并结合k-means算法将其聚类,你可以尝试分别聚类不同数量的簇,并观察聚类效果:
聚类算法2-聚类算法api初步使用

聚类参数n_cluster传值不同,得到的聚类结果不同
聚类算法2-聚类算法api初步使用

2.1 流程分析

聚类算法2-聚类算法api初步使用

2.2 代码实现

导入需要的包

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))
上一篇:ML09 My_NavieBayes


下一篇:4_鸢尾花(k临近)