sklearn中的Kmeans

直接导入sklearn中KMeans模块

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#导入KMeans
from sklearn.cluster import KMeans
#生成一个样本点数据集
from sklearn.datasets import make_blobs
X,y = make_blobs(n_samples=500,n_features=2,centers=4,random_state=2)
#绘制散点图
plt.scatter(X[:,0],X[:,1]
           ,marker="*"
           ,s = 6
           )
data = pd.DataFrame(X)

在这里插入图片描述
在做聚类算法时,如何评估聚类效果的好坏,是一个难题。
如果采用SSE,缺点较明显,例如当特征数目较多、维度较大时,SSE的计算量很大。采取降维,增加了工作量也可能造成更多的损失。

通常使用轮廓系数作为聚类算法的评估指标。它是对每个样本来定义的,单个样本的轮廓系数方程式为:

					**s  =  (b-a) / max(a,b)**

a样本其自身所在簇的其他样本 的相似度,等于样本与同簇中所有点之间的平均距离。
b样本异簇样本的相似度,等于样本与异簇所有点的平均距离。

在这里插入图片描述
使用轮廓系数

#使用轮廓系数
from sklearn.metrics import silhouette_samples
from sklearn.metrics import silhouette_score

#记录不同簇数下的轮廓系数的均值
silhouette_score_list = []
for i in [2,3,4,5,6]:
    cluster_i = KMeans(n_clusters=i,random_state=2).fit(X)
    cluster_i_labels = cluster_i.labels_
    #样本点轮廓系数均值
    silhouette_score_i = silhouette_score(X,cluster_i_labels)
    silhouette_score_list.append(silhouette_score_i)
silhouette_score_list

列表如下:

[0.5563935385599693,
0.6602750377214402,
0.6250462156493074,
0.5682151387843899,
0.46897422644386516]

即,当簇数为3或4时,模型较优。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值