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

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

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)
• 1
• 2
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)

d5389c3a8f124f8c835beacf8cc2810b.png


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]

7d9e3ccaa9ad469baef7d44414da7fe4.png


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


# 画一个折线图,体现聚类个数和轮廓系数之间的关系
plt.plot(clusters,sil_scores)
• 1
• 2
[<matplotlib.lines.Line2D at 0x26d99d4a5f8>]

70960cee90c14308a18616684b538179.png


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


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


相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
5月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
424 46
|
6月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
|
7月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
303 6
|
8月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
8月前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
505 3
|
8月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
1月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
195 0
|
1月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
144 2

热门文章

最新文章