ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

聚类算法评估——轮廓系数及python实现

2019-07-22 14:02:33  阅读:2079  来源: 互联网

标签:系数 python 算法 estimator pd 聚类 import 轮廓


含义

轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式。     

可见轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优。

计算步骤

1)对于簇中的每个向量,分别计算它们的轮廓系数。

      对于其中的一个点 i 来说:

      计算 簇内不相似度a(i) :i向量到同簇内其他点不相似程度平均值,体现凝聚度

      计算 簇间不相似度b(i) :i向量到其他簇平均不相似程度最小值,体现分离度

      那么第i个对象的轮廓系数就为:

      si接近1,则说明样本i聚类合理;si接近-1,则说明样本i更应该分类到另外的簇;若si 近似为0,则说明样本i在两个簇的边界上。

2)所有点的轮廓系数求平均,就是该聚类结果总的轮廓系数。


python实现

# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn import metrics

#假如我要构造一个聚类数为10的聚类器
estimator = KMeans(n_clusters=10, random_state=777)#构造聚类器,设定随机种子
estimator.fit(kmeans_data_tf)#聚类

r1 = pd.Series(estimator.labels_).value_counts()  #统计各个类别的数目
r2 = pd.DataFrame(estimator.cluster_centers_)     #找出聚类中心
r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向),得到聚类中心对应的类别下的数目
r.columns = list(kmeans_data_tf.columns) + [u'类别数目'] #重命名表头
print(r)
print("轮廓系数:", metrics.silhouette_score(kmeans_data_tf, estimator.labels_, metric='euclidean'))

 

标签:系数,python,算法,estimator,pd,聚类,import,轮廓
来源: https://blog.csdn.net/qq_14997473/article/details/96840513

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有