【数据挖掘】K-Means、K-Means++、ISODATA算法详解及实战(图文解释 附源码)

聚类分析

无监督学习(Unsupervise Learning)着重于发现数据本身的分布特点。与监督学习(Supervised Learning)不同,无监督学习不需要对数据进行标记。从功能角度讲,无监督学习模型可以发现数据的“群落”,同时也可以寻找“离群”的样本。另外,对于特征维度非常高的数据样本,同样可以通过无监督学习进行数据降维,保留最具有区分性的低维度特征

聚类是一个将数据对象集划分为多个组或簇的过程,使得簇内的数据对象具有很高的相似性,但不同簇间的对象具有很高的相异性

聚类算法分类

随着聚类分析技术的蓬勃发展,目前已有很多类型的聚类算法。但很难对聚类方法进行简单的分类,因为这些类别的聚类可能重叠,从而使得一种方法具有一些交叉的特征。一般而言,聚类算法被划分为以下几类

1.划分方法

2.基于层次的方法

3.基于密度的方法

4.局域网格的方法

K-Means聚类

聚类分析中最广泛使用的算法为K-Means聚类算法

给定一个n个对象或元组的数据库,一个划分方法构建数据的k个划分,每个划分表示一个簇,k<=n,而且满足

(1)每个组至少包含一个对象;

(2)每个对象属于且仅属于一个组

划分时要求同一个聚类中的对象尽可能地接近或相关,不同聚类中的对象尽可能地远离或不同。K-Means算法是一个迭代的优化算法,最终使得下面均方误差最小。

算法流程图如下

 用于划分的K-Means算法,其中每个簇的中心都用簇中所有对象的均值来表示。K-Means聚类模型所采用的迭代算法直观易懂且非常实用。但是具有容易收敛到局部最优解和需要预先设定簇的数量的缺陷

优点:

可扩展性较好,算法复杂度为O(nkt),其中n为对象总数,k是簇的个数,t是迭代次数 

经常终止于局部最优解

缺点

只有当簇均值有定义的情况下,k均值方法才能使用。(某些分类属性的均值可能没有定义)

用户必须首先给定簇数目

不适合发现非凸形状的簇,

或者大小差别很大的簇 对噪声和离群点数据敏感

K-Means算法实现

下面对Iris数据集进行K-Means聚类

结果如下 显示每个预测对应的类别标签

 代码如下

from sklearn.datasets import load_iris  
from sklearn.cluster import KMeans  
iris = load_iris()    #加载数据集
X = iris.data  
estimator = KMeans(n_clusters = 3)    #构造K-Means聚类模型
estimator.fit(X)  #数据导入模型进行训练
label_pred = estimator.labels_   #获取聚类标签
print(label_pred)
#显示各个样本所属的类别标签

k均值方法有些变种

他们的区别在于 不同的初始 k 个均值的选择

不同的相异度计算

不同的计算簇均值的策略

聚类分类数据的方法:k众数(mode)方法

用众数来替代簇的均值

采用新的相异性度量处理分类对象

采用基于频率的方法更新簇的众数 可以集成k均值和k众数方法,

对具有数值和分类值的数据进行聚类

K-Means算法改进

1. K-means++算法

K-means算法初始时随机选取数据集中K个点作为聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。K-means++算法初始的聚类中心之间的相互距离要尽可能的远

2. ISODATA算法

ISODATA的全称是迭代自组织数据分析法,是在K- means算法的基础上,增加对聚类结果的“合并”和“分裂”两个操作,当属于某个类别的样本数过少时则删除该类,当属于某个类别的样本数过多、分散程度较大时,把这个类分裂为两个子类别

创作不易 觉得有帮助请点赞关注收藏~~~

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Kmeans图像聚类算法的详细流程包括:1.首先,从输入图像中随机选择一定数量的聚类中心;2.计算每个像素点到这些聚类中心的距离;3.将每个像素分配到距离它最近的聚类中心;4.重新计算每个聚类中心的位置;5.重复步骤2-4,直到聚类中心不再变化;6.最终将所有像素分配到相应聚类中。 ### 回答2: K-means是一种常用的图像聚类算法,其详细流程如下: 1. 选择要聚类的图像数据集,并确定要分成的聚类数量K。 2. 随机选择K个样本作为初始的聚类中心。 3. 针对每个样本,计算其与每个聚类中心的距离,并将其分配给距离最近的聚类中心。 4. 对于每个聚类,计算其所有样本的质心(即计算聚类中心)。 5. 检查每个样本的聚类标签是否发生变化。如果有样本的聚类标签发生变化,则返回第3步,否则继续下一步。 6. 完成聚类过程后,得到了每个样本的最终聚类标签。 7. 可以通过聚类结果对图像进行可视化。将每个样本的像素值替换为其所属聚类聚类中心像素值,即可得到聚类后的图像。 8. 评估聚类的性能。可以使用外部指标(如兰德系数)或内部指标(如轮廓系数)来评估聚类结果的质量。 K-means算法通过迭代的方式逐渐优化聚类结果,直到达到稳定状态。聚类中心的选择对于算法的收敛速度和聚类结果的质量起着重要作用。在实际应用中,还可以对聚类结果进行后处理,如合并相似的聚类或剔除离群点,进一步优化聚类结果的准确性。 ### 回答3: Kmeans图像聚类算法是一种常用的无监督学习算法,用于将图像像素点根据相似性分为不同的类别。其详细流程如下: 1. 初始化:首先确定需要将图像分为多少个类别,然后随机选择该数量的代表点,作为初始的类别中心。 2. 分配:对于每个像素点,计算该像素与每个类别中心的距离,将其分配给距离最近的类别。 3. 更新:针对当前的类别分配情况,重新计算每个类别的中心点位置。将每个类别的中心点更新为该类别中所有像素点的平均值。 4. 重复:重复执行步骤2和步骤3,直到类别中心不再发生变化,或达到预设的迭代次数。 5. 结果:最终结果是将图像中的像素点划分为不同的类别,且每个类别有一个对应的中心点。 Kmeans算法的优势在于其简单易懂、计算效率高,并且可以灵活地处理不同数据类型。但是它也存在一些不足,例如对于初始类别中心的选择敏感,容易陷入局部最优解,以及对于非球形数据集分布的适应性较差等。 在图像聚类中,Kmeans算法可以用于多个应用领域,例如图像分割、物体识别、图像压缩等。它的基本原理是通过最小化每个像素点与所属类别中心之间的距离,来达到类别划分的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值