简单KMEANS聚类实现
# 导入工具库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import MiniBatchKMeans,KMeans# 小批量的更新质心,而不是用所有的样本更新质心
from sklearn import metrics #数据簇生成器
from sklearn.datasets.samples_generator import make_blobs #样本生成器,球状簇
# 生成数据集
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()
使用Kmeans进行聚类,分别聚成234类
# 使用枚举的方法分别聚成2345类簇
for index, k in enumerate((2,3,4,5)):
plt.subplot(2, 2, index+1)
# 预测标签
y_pred = MiniBatchKMeans(n_clusters = k, batch_size=200, random_state= 9).fit_predict(x)
score = metrics.calinski_harabaz_score(x,y_pred)#最终聚类效果评分,CH系数
plt.scatter(x[:, 0], x[:, 1], c=y_pred)# 显示聚类效果图
plt.text(.99, .01, ('k = %d, score: %.2f' %(k, score)),
transform = plt.gca().transAxes,size = 10,
horizontalalignment = 'right')#显示格式化,规定以相同的格式显示
plt.show()
网友评论