美文网首页机器学习实战
【阿旭机器学习实战】【17】KMeans聚类算法中如何选择合适的

【阿旭机器学习实战】【17】KMeans聚类算法中如何选择合适的

作者: 阿旭123 | 来源:发表于2022-11-23 15:18 被阅读0次

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。

目录

KMeans聚类算法中如何选择合适的聚类个数?

问题描述

我们随机生成一些二维点的数据,然后通过不同的K值对其进行分类评估。

具体步骤:

  1. 随机生成一些二维点
  2. 选取不同的K值进行模型训练,并计算轮廓系数
  3. 画出K值与轮廓关系的折线图,看取哪一个K值合适

1. 随机生成二维数据点

import numpy as np
x1 = np.random.randint(1,10,size=14)
x2 = np.random.randint(1,10,size=14)
x = np.c_[x1,x2]
x
array([[6, 5],
       [3, 6],
       [4, 4],
       [2, 9],
       [1, 8],
       [1, 5],
       [1, 7],
       [7, 4],
       [3, 7],
       [2, 2],
       [2, 8],
       [6, 5],
       [3, 2],
       [6, 4]])
# 画出这些点的散点图
plt.scatter(x1,x2)
在这里插入图片描述

2. 定义不同聚类中心个数对点进行分类

# 定义出若干种聚类的个数
clusters = [2,3,4,5,8]
plt.figure(figsize=(8*2,3*3))

# 定义一个列表用于存储轮廓系数
sil_scores = []
# 定义一个变量,用于记录当前是第几个图
sub_center = 1

axes = plt.subplot(231)
axes.scatter(x1,x2)
axes.set_title("Instances")

for cluster in clusters:
    km = KMeans(n_clusters=cluster).fit(x)
    # 打印每种聚类划分的标签
    print(km.labels_)
    
    # 求每一次划分的轮廓系数
    sil_score = metrics.silhouette_score(x,km.labels_)
    sil_scores.append(sil_score)
    
    # 画图
    sub_center += 1
    axes = plt.subplot(2,3,sub_center)
    axes.scatter(x1,x2,c=km.labels_)
    # 把当前的K值和轮廓系数作为标题
    axes.set_title("K=%s,Sil_score=%s"%(cluster,sil_score))
[0 1 0 1 1 1 1 0 1 0 1 0 0 0]
[0 1 0 1 1 1 1 0 1 2 1 0 2 0]
[2 3 1 0 0 3 0 2 3 1 0 2 1 2]
[2 1 0 3 3 4 3 2 1 0 3 2 0 2]
[2 3 6 7 1 4 1 5 3 0 7 2 0 5]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvjvXNek-1667459348007)(output_51_1.png)]

3. 画图选取最合适的K值

# 画一个折线图,体现聚类个数和轮廓系数之间的关系
plt.plot(clusters,sil_scores)
[<matplotlib.lines.Line2D at 0x26d99d4a5f8>]
在这里插入图片描述

通过上面折线图我们可以看到,当K=3时,轮廓系数最大,分类效果最好。

如果内容对你有帮助,感谢点赞+关注哦!

更多干货内容持续更新中…

相关文章

  • K均值聚类及代码实现

    KMeans聚类 在聚类算法中,最出名的应该就是k均值聚类(KMeans)了,几乎所有的数据挖掘/机器学习书籍都会...

  • Pyspark实现KMeans机器学习聚类算法(一)

    Pyspark实现KMeans机器学习聚类算法(一) 环境配置:spark 2.1.1python 3.5.2IP...

  • kmeans算法

    kmeans算法 简介kmeans算法 kmeans算法又称k平均或k均值算法,一种已知聚类类别数的聚类算法。 它...

  • 二分 KMeans,Bisecting KMeans 代码实现

    算法原理:由于传统KMeans算法的聚类结果易受初始聚类中心点选择的影响,因此在传统的KMeans算法的基础上进行...

  • Spark实现 -- Kmeans聚类算法

    Spark实现 -- Kmeans聚类算法 Kmeans简介 Kmeans是最常用的聚类算法,也是十大经典的数据挖...

  • 如何确定kmeans算法的k值

    问题的提出: Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少。Kmeans算法对初始值是...

  • K-Means算法

    参考链接:1. python机器学习实战之K均值聚类2. 机器学习实战之K-Means算法3.《机器学习实战》(十...

  • 聚类算法(三)——二分K-means算法

    简介 由于传统的KMeans算法的聚类结果易受到初始聚类中心点选择的影响,因此在传统的KMeans算法的基础上进行...

  • 102、聚类Kmeans算法

    这两天学习聚类中的Kmeans算法,有关Kmeans算法的介绍我推荐看"简书-程sir"的文章,简单易懂。 推荐地...

  • Clustering

    本文结构安排 经典聚类算法:线性聚类 Kmeans 经典聚类算法:非线性聚类 DBSCAN、谱聚类 新兴聚类算法:...

网友评论

    本文标题:【阿旭机器学习实战】【17】KMeans聚类算法中如何选择合适的

    本文链接:https://www.haomeiwen.com/subject/ygpzxdtx.html