当前位置: 首页 > news >正文

《机器学习K-means通关指南:选K、算距离、找质心一次搞懂》

文章目录

  • K-means
  • 聚类和分类的区别
    • K-means基本概念:
    • 常见的距离
  • 图解过程
    • 初始状态(图a)
    • 初始化质心(图b)
    • 分配数据点到最近的质心(图c)
    • 重新计算质心并迭代
  • 聚类效果的评价方式
  • 【参数:】
  • 【属性】
  • python实现

K-means

K-means 是一种“无监督聚类”算法,运行前必须人为指定要把数据分成多少个簇,这个数量用 K​ 表示。
K 值直接影响聚类结果。K 太小会把不同类的数据强行合并,K 太大会把同类数据拆得过细。

聚类和分类的区别

分类是“有标签的监督学习”,聚类是“无标签的无监督学习”——前者已知“答案”(类别标签)去学规律,后者不知道“答案”,只能靠数据本身的相似性分组。

K-means基本概念:

1.聚成多少个簇:需要指定K的值
K-means里的K是“要分的簇的数量”,必须人为提前定好。比如想把用户分成3类,K就设为3;想分5类,K就设为5。

2.距离的度量:一般采用欧式距离
算法要判断“数据点离哪个质心近”,就得算距离。最常用的距离是欧式距离

3.质心:各向量的均值
质心是每个簇的“中心点”,计算方式是簇内所有数据点的“向量均值”。


    这是K-means的核心目标:最小化**“所有簇内数据点到质心的平方距离之和”**。

    常见的距离

    图解过程

    初始状态(图a)

    图中有一些绿色的点,代表待聚类的数据集,此时还未确定质心。

    初始化质心(图b)

    图中出现了两个“×”,这两个“×”就是随机初始化的两个质心,用于开始聚类过程。

    分配数据点到最近的质心(图c)

    图中的绿色点被分配到了距离各自最近的质心所在的类别,形成了红色的两个簇。同时,根据注释“新的质心为所有类中的数据x值平均”,接下来会重新计算每个簇的质心。

    重新计算质心并迭代

    重新计算质心后,算法会再次将数据点分配到距离新的质心最近的类别,然后又重新计算质心,如此迭代,直到质心不再发生明显变化或者达到预设的迭代次数等停止条件为止。

    聚类效果的评价方式


    【参数:】

    n_clusters:类中心的个数,就是要聚成几类。【默认是8个】
    init:参初始化的方法,默认为’k-means++’
    (1)‘k-means++’:用一种特殊的方法选定初始质心从而能加速迭代过程的收敛.
    (2) ‘random’:随机从训练数据中选取初始质心。
    **(3) 如果传递的是一个ndarray,**则应该形如 (n_clusters, n_features) 并给出初始质心。
    n_init:整形,缺省值=10
    用不同的质心初始化值运行算法的次数,最终解是在inertia意义下选出的最优结果。
    max_iter :
    执行一次k-means算法所进行的最大迭代数。
    Tol: 与inertia结合来确定收敛条件。
    precompute_distances:三个可选值,‘auto’,True 或者 False。
    预计算距离,计算速度更快但占用更多内存。
    **(1)‘auto’:**如果 样本数乘以聚类数大于 12million 的话则不预计算距离。
    **(2)True:**总是预先计算距离。
    **(3)False:**永远不预先计算距离。
    **verbose:**整形,默认值=0
    **random_state 😗*随机状态
    **copy_x:**布尔型,默认值=True
    当我们precomputing distances时,将数据中心化会得到更准确的结果。如果把此参数值设为True,则原始数据不会被改变。如果是False,则会直接在原始数据 上做修改并在函数返回值时将其还原。但是在计算过程中由于有对数据均值的加减运算,所以数据返回后,原始数据和计算前可能会有细小差别。
    algorithm:‘auto’,‘full’ or ‘elkan’.默认为’auto’
    full:采用经典的EM算法
    elkan:通过使用三角不等式从而更有效,但不支持稀疏数据
    auto:数据稀疏选择full模式,数据稠密选择elkan模式

    【属性】

    cluster_centers_:一个n-clusters*n_features的矩阵,表示聚类中心的坐标
    Labels_:
    每个点的分类标签。
    **inertia_:**float形
    每个点到其簇的质心的距离之和。
    n_iter_ :int
    迭代次数。

    python实现

    importpandasaspdfromsklearn.clusterimportKMeansfromsklearnimportmetrics""" 可视化网站 https://www.naftaliharris.com/blog/visualizing-k-means-clustering/ """#读取文件beer=pd.read_table("data.txt",sep=' ',encoding='utf8',engine='python')#传入变量(列名)X=beer[["calories","sodium","alcohol","cost"]]""" 根据分成不同的簇,自动计算轮廓系数得分 """scores=[]forkinrange(2,10):#寻找合适的K值labels=KMeans(n_clusters=k).fit(X).labels_#从左到右依次进行计算score=metrics.silhouette_score(X,labels)#轮廓系数scores.append(score)print(scores)#绘制得分结果importmatplotlib.pyplotasplt plt.plot(list(range(2,10)),scores)plt.xlabel("Number of Clusters Initialized")plt.ylabel("Sihouette Score")plt.show()#聚类km=KMeans(n_clusters=2).fit(X)#K值为2【分为2类】beer['cluster']=km.labels_#对聚类结果进行评分""" 采用轮廓系数评分 X:数据集 scaled_cluster:聚类结果 score:非标准化聚类结果的轮廓系数 """score=metrics.silhouette_score(X,beer.cluster)print(score)**寻找最佳簇数 K​**用循环测试 K=29,分别训练 K-means 模型。 对每个 K 计算轮廓系数(衡量簇内紧凑度与簇间分离度)。 记录所有 K 的轮廓系数并绘图,直观看出哪个 K 效果最好。**执行最终聚类**​ 根据图形或业务需求,选定一个 K(此代码选 K=2)。 用该 K 训练 K-means,得到每个样本的簇标签,并保存到原数据表中。**评估聚类效果​**用轮廓系数对最终聚类结果打分,判断聚类质量。


    http://www.jsqmd.com/news/155840/

    相关文章:

  1. SSH隧道转发可视化结果:PyTorch训练过程实时监控
  2. Photoshop - Photoshop 工具栏(44)历史记录画笔工具
  3. 2025年银川市评价好的停车场岗亭源头工厂推荐,岗亭售货亭/钢结构岗亭/值班岗亭/户外站岗岗亭,停车场岗亭源头工厂选哪家 - 品牌推荐师
  4. PyTorch自动求导机制autograd详解(含代码演示)
  5. Java毕设项目:基于springboot的船舶物料供应商交易平台的设计与实现(源码+文档,讲解、调试运行,定制等)
  6. Day3输入姓名案例
  7. 2025.9.22社团管理(五)
  8. Day3变量的命名规则
  9. 【计算机毕业设计案例】基于Java的船舶物料供应商交易平台的设计与实现基于springboot的船舶物料供应商交易平台的设计与实现(程序+文档+讲解+定制)
  10. C++数据竞争与无锁编程
  11. 技术博客SEO优化技巧:让‘pytorch安装教程gpu’排名靠前
  12. Photoshop - Photoshop 工具栏(47)油漆桶工具
  13. 超长篇幅字符串比较的哈希优化方法
  14. 从实验到生产:PyTorch-CUDA镜像助力无缝模型迭代
  15. Java毕设项目推荐-基于Java+springboot的船舶物料供应商交易平台的设计与实现基于springboot的船舶物料供应商交易平台的设计与实现【附源码+文档,调试定制服务】
  16. 崩溃!用 ComfyUI 生成的图,竟和我梦中的场景一模一样...
  17. 从CSDN图片描述看细节:Jupyter和SSH使用场景对比
  18. WSL注册失败怎么办?改用PyTorch-CUDA镜像绕过系统限制
  19. 清华TUNA镜像源配置PyTorch+CUDA的pip命令示例
  20. 2025年吴忠可靠的移动房屋生产厂家推荐榜单,岗亭集成房屋/停车场岗亭/移动房屋/岗亭移动厕所,移动房屋定制公司联系电话 - 品牌推荐师
  21. 如何撰写高转化率的技术博客推广GPU与Token销售
  22. 模拟信号处理低功耗与高可靠实现原理,从器件到系统的全链路方案
  23. Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 系统启动与关闭详解(11)
  24. VSCode连接远程Windows11的WSL2的项目
  25. 2025.9.19社团管理(三)
  26. 几个新的浏览器JS API
  27. 推荐阅读:gRPC 的设计原理与网络编程实践
  28. 【Week1_Day3】【软件测试学习记录与反思】【Linux的系统性学习、定义优先级的维度、Linux系统搭建与终端练习、反思与改进】
  29. 大模型Token消耗监控工具开发实践(Python实现)
  30. 推荐阅读:gRPC 协议与网络编程中的实践挑战