Kmeans代码实现
本章会介绍如何用py实现Kmeans模型
导入相关的库
from sklearn.cluster import KMeans # 聚类的API,采用指定质心来分簇
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.metrics import calinski_harabasz_score # 评价指标,值越大,聚类效果越好
一、准备数据集
#make_blobs是 scikit-learn 内置的数据集生成函数,用来自动生成多簇的模拟二维 / 多维样本数据
# 参1:样本数量;参2:样本特征数量(2列);参3:样本标签数量,也可以用列表传入每个簇的中心;参4:标准差;参5:随机种子
x,y = make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=1,random_state=0)
print(x) #x是特征
print(y) #y是属于第几簇
二、绘制上述的图形
# 参1:横坐标;参2:纵坐标;参3:颜色
plt.scatter(x[:,0],x[:,1])
plt.show()
三、创建kMeans对象
# 参1:聚类数量;参2:随机种子
estimator = KMeans(n_clusters=4,random_state=23) #这里的随机性是随机选择质心造成的
四、训练模型和预测
y_pred = estimator.fit_predict(x)
五、绘制预测结果
plt.scatter(x[:,0],x[:,1],c=y_pred) #c = color;传入一维数组(你这里是 y_pred):数组里每个数字对应一个点的颜色,相同数字用同一种颜色。
plt.show()
六、评价指标
print(f'评价指标(评分):{calinski_harabasz_score(x,y_pred)}')#越大越好

浙公网安备 33010602011771号