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

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

相关文章
|
3月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
172 4
|
2月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
134 3
|
3月前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
175 7
|
3月前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
146 8
|
4月前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
40 1
|
5月前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
83 2
|
5月前
|
算法 搜索推荐 开发者
别再让复杂度拖你后腿!Python 算法设计与分析实战,教你如何精准评估与优化!
在 Python 编程中,算法的性能至关重要。本文将带您深入了解算法复杂度的概念,包括时间复杂度和空间复杂度。通过具体的例子,如冒泡排序算法 (`O(n^2)` 时间复杂度,`O(1)` 空间复杂度),我们将展示如何评估算法的性能。同时,我们还会介绍如何优化算法,例如使用 Python 的内置函数 `max` 来提高查找最大值的效率,或利用哈希表将查找时间从 `O(n)` 降至 `O(1)`。此外,还将介绍使用 `timeit` 模块等工具来评估算法性能的方法。通过不断实践,您将能更高效地优化 Python 程序。
85 4
|
4月前
|
存储 算法 安全
ArrayList简介及使用全方位手把手教学(带源码),用ArrayList实现洗牌算法,3个人轮流拿牌(带全部源码)
文章全面介绍了Java中ArrayList的使用方法,包括其构造方法、常见操作、遍历方式、扩容机制,并展示了如何使用ArrayList实现洗牌算法的实例。
29 0
|
16天前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
16天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
110 68

热门文章

最新文章