sklearn kmeans_使用 Sklearn 实现Kmeans聚类的最简单代码及说明

#废话不多说,直接上代码!

#重要的部分有注释,所有的参数都有参数说明,可以直接运行,适合小白。

#未经许可,禁止转载。

from sklearn.datasets import make_blobs

import matplotlib.pyplot as plt

from sklearn.cluster import KMeans

import pandas as pd

import numpy as np

#自己创建数据集

#500个数据,2维,4个簇,不随机

X, y = make_blobs(n_samples=500,n_features=2,centers=4,random_state=1)

#建模:聚成3簇,然后把X放入模型中训练

cluster = KMeans(n_clusters=3, random_state=0).fit(X)

#画图

color = ["red","pink","orange","gray"]

fig, ax1 = plt.subplots(1)

#画出簇

for i in range(3):

ax1.scatter(X[y_pred==i, 0], X[y_pred==i, 1] ,marker='o' ,s=8,c=color[i])

#画出质心

ax1.scatter(centroid[:,0],centroid[:,1] ,marker="x" ,s=15,c="black")

plt.show()

v2-dd2d5c71090df125540d1be8c978a347_b.jpg

-----------------------------------------------------------------------------------------------

#其他

#查看质心

centroid = cluster.cluster_centers_

print(centroid)

#查看聚好的类别,每个样本所对应的类,即每一个点的标签属性

y_pred = cluster.labels_

#y_pred #由0,1,2组成

#查看总距离的平方和,越小越好

inertia = cluster.inertia_

print(inertia)

#模型评估指标1:轮廓系数,轮廓系数范围是(-1,1),其中值越接近1表示样本与自己所在的簇中的样本很相似,并且与其他簇中的样本不相似,

#当样本点与簇外的样本更相似的时候,轮廓系数就为负。当轮廓系数为0时,则代表两个簇中的样本相似度一致,两个簇本应该是一个簇。

#可以总结为轮廓系数越接近于1越好,负数则表示聚类效果非常差。

from sklearn.metrics import silhouette_score

from sklearn.metrics import silhouette_samples

silhouette_score(X,y_pred) #参数1:完整的数据;参数2:每一个点的标签属性

#模型评估指标2:卡林斯基-哈拉巴斯指数,越高越好

from sklearn.metrics import calinski_harabaz_score

calinski_harabaz_score(X, y_pred)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值