“”轮廓系数-----聚类的评价指标
良好的聚类:内密外稀,同一个集群内的样本必须足够密集,不同集群之间的样本必须足够稀疏。
轮廓系数计算规则:针对样本空间中的某个特定样本,计算该样本与集群中其他样本的平均距离a,
以及样本与最近的其他集群中所有样本的平均距离b。 该样本的轮廓系数为(b-a )/max(a,b )。
设整个样本空间中所有样本的轮廓系数为算术平均值,作为聚类划分的性能指标s。
轮廓系数的区间是[-1,1 ]。 -1表示分类效果低,1表示分类效果好。 0表示集群重叠,集群没有很好地划分。
配置文件系数相关API :
import sklearn.metrics as sm
# v :平均轮廓系数
#度量:距离算法:使用年轻羊的距离(euclidean )
v=sm.silhouette_score (输入集、输出集、sample_size=采样数、度量=距离算法)。
情况:输出k均值算法聚类分割后的轮廓系数。 ''''
importnumpyasnpimportmatplotlib.pyplotasmpimportsklearn.clusterasscimportsklearn.metrics assm #读取数据并绘制图像
x=NP.load txt ('./ml _ data/multiple3. txt ),unpack=False,dtype='f8 ',delimiter=',') print ) x.sh
模型=sc.k means (n _ clusters=4)。
完成model.fit(x ) #群集
pred_y=model.predict(x ) #预测点位于哪个群集
输出每个print(pred_y )样本的簇标签)打印轮廓系数
获取print(sm.silhouette_score(x,pred_y,sample_size=len(x ) x,metric='euclidean ' ) )集群中心
centers=model.cluster _ centers _ print (centers ) #绘制分类界线
l,r=x [ :0 ].min (-1,x [ :0 ].max ) 1b,t=x [ :1 ].min )-1,x [ :1 ].mm
BG _ x=NP.column _ stack ((grid _ x.ravel ),grid_y.ravel ) )
BG_y=model.predict(BG_x )。
绘制grid _ z=BG _ y.reshape (grid _ x.shape ) #图显示示例数据
MP.figure('kmeans ',facecolor='lightgray ' ) )
MP.title('kmeans ',fontsize=16 ) )。
MP.xlabel('x ',fontsize=14 ) )。
MP.ylabel('y ',fontsize=14 ) )。
MP.Tick_Params(labelsize=10 ) )。
MP.Pcolormesh(grid_x,grid_y,grid_z,cmap='gray ' ) )
MP.scatter (x [ :0 ],x [ :1 ],s=80,c=pred_y,cmap='brg ',label='Samples ' ) ) )。
MP.scatter (centers [ :0 ],centers [ :1 ],s=300,color='red ',marker=' ',label='cluster center
mp.legend () )
mp.show () )
输出结果:
(200,2 ) ) )。
[ 110213021302130213021302130213023302302130213023130231030202121
3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 302 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 0 3 0 2 1 3 0 2 1 3 0 2 1 302 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2
1 1 0 2 1 3 0 2 1 3 0 3 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1 3 0 2 1
3213021302021302302 (0.5773232071896659 (5.911960782.04980392 ) )。
[1.831 1.9998]
[7.07326531 5.61061224]
[3.1428 5.2616 ]]