python计算3j系数_聚类算法评估——轮廓系数及python实现

含义

轮廓系数(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值