python——k-means聚类(余弦距离,用轮廓系数确定聚类系数K)

    用scikit-learn进行k-means聚类,默认使用欧式距离,为了用余弦距离作为度量,找了一个在生物信息学里比较常用的库:Biopython。Biopython为k-means聚类提供了各种距离函数,包括余弦距离、皮尔逊相似度量、欧式距离等。

    另外,为了确定一个合理的聚类系数,采用轮廓系数作为衡量标准:

    轮廓系数取值为[-1, 1],其值越大越好。

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from Bio.Cluster import kcluster
from Bio.Cluster import clustercentroids
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
data=np.load('/home/philochan/ResExp/genderkernel/1.npy')
coef = []
x=range(3,20)
for clusters in x:
    clusterid, error, nfound = kcluster(data, clusters, dist='u',npass=100)
    silhouette_avg = silhouette_score(data, clusterid, metric = 'cosine')
    coef.append(silhouette_avg)
  
e =[i+3 for i,j in enumerate(coef) if j == max(coef)]
print e
print coef
plt.plot(x,coef)
plt.show()

  • 16
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值