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

简介: 【数据挖掘】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算法的基础上,增加对聚类结果的“合并”和“分裂”两个操作,当属于某个类别的样本数过少时则删除该类,当属于某个类别的样本数过多、分散程度较大时,把这个类分裂为两个子类别

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

相关文章
|
数据采集 机器学习/深度学习 算法
|
2月前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
|
12月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1149 6
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
642 1
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
612 1
|
9月前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
244 10
|
数据采集 算法 数据可视化
基于K-Means聚类算法对球员数据的聚类分析,可以自主寻找最优聚类数进行聚类
本文介绍了一个基于K-Means聚类算法的NBA球员数据分析项目,该项目通过采集和分析球员的得分、篮板、助攻等统计数据,使用轮廓系数法和拐点法确定最优聚类数,将球员分为不同群组,并提供了一个可视化界面以便直观比较不同群组的球员表现。
284 0
基于K-Means聚类算法对球员数据的聚类分析,可以自主寻找最优聚类数进行聚类
|
算法 数据可视化 搜索推荐
基于python的k-means聚类分析算法,对文本、数据等进行聚类,有轮廓系数和手肘法检验
本文详细介绍了基于Python实现的k-means聚类分析算法,包括数据准备、预处理、标准化、聚类数目确定、聚类分析、降维可视化以及结果输出的完整流程,并应用该算法对文本数据进行聚类分析,展示了轮廓系数法和手肘法检验确定最佳聚类数目的方法。
592 0

热门文章

最新文章

下一篇
oss云网关配置