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为一维数组
X,y=make_blobs(n_samples=10,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2],[4,4]],
cluster_std=[0.4,0.2,0.2,0.2,0.2],random_state=9)
print(X)
#生成数据散点图
plt.scatter(X[:,0],X[:,1],marker='o')
plt.show()
for index,k in enumerate((2,3,5)):
# 将图像划分为两行两列的四个子图
plt.subplot(2,2,index+1)
#调用MiniBatchKMeans算法接口函数
#n_clusters中心点的个数,batch_size确定MiniBatchKMeans的采样集的大小,random_state确定用于质心初始化的随机数生成
#计算群集中心并预测每个样本的群集索引
y_pred = MiniBatchKMeans(n_clusters=k,batch_size=200,random_state=9).fit_predict(X)
print(y_pred)
#给聚类结果一个评分
score = metrics.calinski_harabasz_score(X,y_pred)
#绘制散点图,参数c为颜色
plt.scatter(X[:,0],X[:,1],c=y_pred)
#添加说明,前三个参数为x,y,字符串,transform为移动坐标轴,horizontalalignment为水平对其方式
plt.text(.99,.01,('k=%d,score:%.2f' % (k,score)),transform=plt.gca().transAxes,
size=10,horizontalalignment='right')
plt.show()