机器学习sklearn(12)K-Means聚类

本文介绍了K-Means聚类算法的原理和特点,包括其核心步骤、收敛速度、参数依赖性和结果解释性。通过sklearn库展示了K-Means在鸢尾花数据集上的应用,进行数据预处理、模型训练,得到聚类结果并分析。同时,文章提供了可视化聚类密度分布的方法,帮助理解不同聚类在各维度的分布情况。
摘要由CSDN通过智能技术生成

算法原理

K均值聚类(K-Means)算法的核心步骤如下:

  1. 将数据集{D}中随机取K个元素,作为K个簇的各自的中心。
  2. 分别计算剩下的元素到K个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
  3. 根据聚类结果,重新计算K个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
  4. 将{D}中全部元素按照新的中心重新聚类。
  5. 重复第 4 步,直到每个簇的中心基本不再变化。
  6. 将结果输出。

K均值聚类(K-Means)算法的特点如下:

  • 计算伸缩性: 算法复杂度不高,算法收敛速度快,聚类效果好;
  • 参数依赖性: 可控制的参数较少(仅簇数k), 调参简单;
  • 普适性能力: 泛化能力一般,容易受到噪音干扰;
  • 抗噪音能力: 需要考虑局部最优问题,异常数据干扰问题等;
  • 结果解释性: 模型和结果均具有解释性。
     

sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=’auto’)

主要参数含义:

  1. n_clusters: 即k值,一般需要多试一些值以获得较好的聚类效果。
  2. max_iter: 最大的迭代次数,一般如果是凸数据集的话可以不管这个值,如果数据集不是凸的,可能很难收敛,此时可以指定最大的迭代次数让算法可以及时退出循环。 
  3. n_init:用不同的初始化质心运行算法的次数。由于K-Means是结果受初始值影响的局部最优的迭代算法,因此需要多跑几次以选择一个较好的聚类效果,默认是10,一般不需要改。如果你的k值较大,则可以适当增大这个值。 
  4. init: 即初始值选择的方式,可以为完全随机选择’random’,优化过的’k-means++’或者自己指定初始化的k个质心。一般建议使用默认的’k-means++’。 
  5. algorithm:有“auto”, “full” or “elkan”三种选择。”full”就是我们传统的K-Means算法, “elkan”是elkan K-Means算法。默认的”auto”则会根据数据值是否是稀疏的,来决定如何选择”full”和“elkan”。一般数据是稠密的,那么就是 “elkan”,否则就是”full”。一般来说建议直接用默认的”auto”。
  6. n_jobs:并发次数。

from sklearn import datasets
iris = datasets.load_iris()
iris_data = iris.data

print(iris_data)

array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [6.5, 3. , 5.2, 2. ],
       [6.2, 3.4, 5.4, 2.3],
       [5.9, 3. , 5.1, 1.8]])

#归一化
from sklear

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值