K-means聚类

本文介绍了K-means聚类算法的应用,通过Python的sklearn库进行实现。内容包括问题背景、所需导入的库、聚类过程中的中心点坐标及分类结果,并讨论了评估聚类效果的轮廓系数。
摘要由CSDN通过智能技术生成

K-means聚类

问题背景

用于解决以下问题:有n个点,每个点都有m个特征值(一般不会太多),将其分为k类。

要求:类与类之间的差距尽可能大,类之间各点的差距尽可能小。这一目标我们使用轮廓系数来衡量。

下面我将展示如何调用python中的sklearn快速地完成聚类算法。

需要导入的库

from sklearn.metrics import silhouette_score
from Bio.Cluster import kcluster
from sklearn.cluster import KMeans

中心点坐标以及分类结果

# 这里的X是原始点坐标,n行m列,表示有n个点,每个点的特征值数量为m个
# 这里n_clusters=4表示分为4类
K = KMeans(n_clusters=4, random_state=0)
# 这句话必不可少
y_pred = K.fit_predict(X)
# 中心点
center = K.cluster_centers_
print(center)
# 分类结果
label=K.labels_
print(label)

轮廓系数

# 下面这一系列过程完成了分别求出分3类到15类情况下轮廓系数的大小(最大的为最佳方案)
coef = []

x = range(3, 15)
for clusters in x:
    print(clusters)
    clusterid, error, nfound = kcluster(X, clusters, dist='u', npass=100)
    silhouette_avg = silhouette_score(X, clusterid, metric='cosine')
    coef.append(silhouette_avg)

e = [i + 3 for i, j in enumerate(coef) if j == max(coef)]
print(e)
print(coef)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值