K-均值聚类(K-means)算法

多元统计分析——聚类分析——K-均值聚类(K-中值、K-众数) 聚类方法 适用场景 代表算法 优点 缺陷 延伸 层次聚类 小样本数据 - 可以形成类相似度层次图谱,便于直观的确定类之间的划分。 该方法可以得到较理想的分类 难以处理大量样本 基于划分的聚类 大样本数据 K-means算法 是解决聚类问题的一种经典算法,简单、快速,复杂度为O(N) 对处理大数据集,该算法保持可伸缩性和高效率 当簇近似为高斯分布时,它的效果较好 . 阅读详情

        聚类算法,是一种无监督的学习方法,他将相似的对象归到统一簇中,簇内的对象越相似,聚类效果也就越好,我们用簇识别表示给出聚类结果的含义。他有点像全自动分类,假定有一些数据,现在将相似数据归到一起,簇识别会告诉我们这些簇到底都是什么;聚类和分类的最大不同在于,分类的目标事先已知,而聚类则不一样。因为其产生的结果与分类相同,而只是类别没有预先定义,聚类有时也被称为无监督学习。

        聚类算法的目的是将相似的对象聚到一起,所以我么就需要一个衡量对象相似度的方法。在机器学习中大多数都是用距离衡量对象之间的相似度的,聚类算法也是用距离来衡量。

  • K-均值聚类算法

        K-均值聚类算法,是从给定的数据集的k个簇。簇个数k是用户给定的,每一个簇通过其质心,即簇中所有点的中心来描述。点与点之间的相似度计算,和KNN算法一样,我们用欧式距离来衡量。也可以用其他自己喜欢的距离度量方法。

        其算法的基本思路及过程如下:

  1. 随机确定k个点作为初始的质心;
  2. 分别计算集合中的点到这k个质心距离,并将每个点归到距离其最近的那个质心所在的簇;如果所有点所属的簇都没发生改变,则到步骤(4)
  3. 分别计算2中生成的k个簇中所有点的均值,并将其作为新的质心。并返回步骤(2)。
  4. 返回所有簇的质心。聚类结束。

        看整个过程其实算法挺简单的,不需要复杂的数据推理什么的。但是这个可能会有一些极端的情况:

                                                       

                                                                         图1

        假设我们要对图1中的9个点进行分类,k值为3。如果正好我们初始的点选择的是3,6,9,那么我们最终的结果可能是{1,9,8},{2,3,4},{5,6,7},那这个结果明显就不是我们想要的结果,即质心的初始化导致结果不好,下面是一个更加实际的图:

                          

                                                              图2

        如图2所示更加真实化的因为质心初始化问题,导致分类结果不好。所以我们就需要对其做进一步的后处理,从而来提高聚类的性能。

  • 使用后处理来提高聚类的性能

        考虑图2中的情况,我们虽然使算法收敛了,但是分类效果较差,原因是K-均值算法收敛到了局部最小值,而非全局最小值(局部最小值指的是结果还可以,但是并非是最好的结果,全局最小值是可能的最好的结果)。

        我们用SSE(Sum of Squared Error,误差平方和)来衡量聚类的效果。SSE值越小表示数据点越接近于他们的质心,聚类效果越好。在看图2,虽然收敛了,但是每个簇中的点距离中心点的距离是很大的。所以我们需要对聚类后的簇进行后处理,使其更加优化。

        一种方法是将具有最大SSE值的簇划分为两个簇。具体是现实可以将最大簇包含的点过滤出来并在这些点上运行K-均值算法,设置k的值为2。为了保持总簇数不变,我们需要将某两个簇进行合并。参考图2的结果目前是三角是一个簇,圆圈是一个簇,方块是一个簇,从图上我们可以看出得先对三角进行2分,然后可以分为:左侧三角、右侧三角、圆、方块4个簇,接下来需要合并簇,根据合并之后簇SSE最小,我么会把左侧三角和圆合并,剩下右侧三角和方块;还是不理想,明显下来需要把左侧三角和圆组成的簇划分,分成左三角+上面两个圆、下面圆、方块、有三角4个簇,接下来就很容易算出需要将下面圆和方块合并,这样就得到了最终优化结果:三角+上面两个圆、下面圆+方块、右三角3个簇。

        对于上面的合并过程有两个办法:合并最近的质心,或者合并两个是的SSE增幅最小的质心。第一种思路通过计算所有质心之间的距离,然后合并距离最近的两个点来实现。第二种方法,需要合并两个簇然后计算踪SSE值。必须在所有可能的两个簇上重复上述处理过程,直到找到合并最佳的两个簇为止。

  • 二分K-均值算法

        为了克服K-均值算法收敛于局部最小值的问题,有人提出了另一个称为二分K-均值算法,思路特别简单

  1. 从整个集合开始;
  2. 生成一个列表,放的是各个簇信息(例如簇编号,中心点),刚开始所有集合是一个簇;
  3. 计算所有簇的SSE值,并将其加起来作为整体的SSE值;
  4. 遍历所有的簇列表,分别将其2分,计算分后的SSE,和分前的整体的SSE值,找出分后使原来的SSE值减小最大的列表中的簇进行划分为两个簇,此时簇数加1,此时被划分的簇就相当于不存在了,被两个新簇代替,然后更新两个新簇的质心,以及簇列表,还有最大的SSE值;
  5. 如果当前簇数等于我们的目标簇数,结束算法,否则返回步骤(4)。

        注:过程中的2分,就是在对应数据集上运行k为2的K-均值聚类算法,生成两个聚类。

  • 总结

           K-均值聚类算法,就是要将一堆混在一起的数据,相似的分到一块,从而发现每一类所具有的特点和其潜在的价值。当然前提我们可能清楚要分为几类,但是并不知道个个类的具体的一些特征,通过聚类后,找到相似类,就可以更好分析其特征。

聚类算法之Kmeans聚类详解 它根据样本之间的相似性,将样本划分到不同的类别中;不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧氏距离法。通过计算相似度(默认欧氏距离),将相似度大的样本聚集到同一个类别,K表示聚成K个类别,means表示每个类别的聚类中心点是通过簇中所有样本点的均值得到。根据分好的类别,计算每个类别的新的聚类中心点(每个点的坐标的平均值),如果得到了新的聚类中心点则停止聚类,否则继续执行第3步,直到聚类中心点不再变化。随着类别的增加,SSE 是会逐渐变小的,因为每个点都是它所在的簇中心本身。 阅读详情

相关推荐

K-means模糊均值聚类算法c++代码实现

K-means模糊均值聚类算法c++代码实现 #include #include #include #include using namespace std; struct Mode { float x1; float x2; }; typedef vector<vector > ModeVec; #define N 4 int Minindex(vector d); float Ge...

weixin_42827735的博客 742

K均值聚类

K-均值聚类算法 1. 什么是K均值聚类算法 K均值聚类(k-means)是基于样本集合划分的聚类算法。K均值聚类将样本集合划分为k个子集,构成k个类,将n个样本分到k个类中,每个样本到其所属类的中心距离最小,每个样本仅属于一个类,这就是k均值聚类,同时根据一个样本仅属于一个类,也表示了k均值聚类是一种硬聚类算法。 2:K均值聚类算法的过程 2.1 k均值聚类的算法过程 输入:n个样本的集合 输出:样本集合的聚类 过程: (1)初始化。随机选择k的样本作为初始聚类的中心。 (2)对样本进行聚类。针对初始化时

weixin_41418263的博客 6万+

K均值算法(K-means)聚类

K均值算法(K-means)聚类 【关键词】K个种子,均值 一、K-means算法原理 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中。 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中。 K-Means算法是一种聚类分析(cluster analysis)的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。 K-...

weixin_43937114的博客 437

第十五课.K均值算法

目录K均值算法原理K均值算法的改进:K-means++numpy实现K-means K均值算法原理 K均值(K-means)算法属于无监督学习中的聚类算法;聚类是根据样本特征向量之间的相似度或距离,将样本数据划分为若干个样本子集,每个子集定义为一个类;相似的样本聚集在相同的类,不相似的样本分散在不同的类。由上面的定义可知,聚类算法只使用了样本的特征向量xxx,并没有使用样本的标签yyy,故聚类算法属于无监督学习 样本距离 样本距离越小,样本的相似性越大。K均值聚类使用欧式距离的平方作为样本距离,计算公式如下

白景屹的博客 4630

Python实现k均值聚类算法_K-Means聚类算法

Python实现k均值聚类算法_K-Means聚类算法 若想快速了解k均值聚类算法_K-Means聚类算法,可参考这位大佬的文章,通俗易懂:k均值聚类算法考试例题_K-Means聚类算法,作者:weixin_39789792 感谢这位博主。 本篇博客仅作为自用笔记,如有侵权联系删除。 代码详细 注意: 质心k的坐标取值不能取的太离谱,比如三个质心中有一个质心的坐标离样本数据中所有坐标都很远,就会导致列表sse_k1(或k2、k3)中无数据,便使len(sse_kx(x为1、2、3))=0,报错:Zero

weixin_44097539的博客 3089

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

5 分钟带你弄懂 k-means 聚类

聚类与分类的区别分类:类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。属于监督学习。聚类:事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类不需要对数据进行训练和学习。属于无监督学习。关于监督学习和无监督学习,这里给一个简单的介绍:是否有监督,就看输入数据是否有标签,输入数据有标签,则为有监督学习,否则为无监督学习。更详尽的解释会在后续

黄飞的博客专栏 12万+

GEE开发之Landsat8计算MNDWI和数据分析

上一篇博客介绍了landsat8计算NDWI以及数据的获取,这次介绍MNDWI(改进的归一化差异水体指数)。

等待着冬天的风的博客 8439

K-均值聚类算法(k-means)的C++实现

K-均值聚类算法(k-means)原理与C++代码实现

ChiKuo_Z的博客 1万+

QtNodeEditor实战:构建高效可视化编程环境的完整指南

本文是QtNodeEditor实战的完整指南,详细介绍了如何利用这一基于Qt框架的可视化编程工具构建高效节点编辑器。内容涵盖从快速集成、自定义节点模型到深入理解MVC数据流架构,并提供了样式定制、场景序列化、动态端口等高级功能的实现方法,帮助开发者快速搭建灵活、可维护的可视化编程环境。

lemon的博客 700

PPT制作能力在职场中真的重要吗?一定要美术功底才能学好PPT吗?

我推出PPT技能培训专栏啦!好的PPT可以让你事半功倍、2023拥有PPT能力还可以让你具备一门极有价值的斜杠能力。更多内容请进:梦幻训练营专栏。专栏内会用本人积累的近10年的PPT学习方法论在短时间内教会你如何制作出精美绝伦的PPT,每篇教程后还会免费赠送一些小福利,不可多得。

打造全国最全的AI Agent开发知识领域的博客 728

k均值聚类算法考试例题_K-Means聚类算法

K-Means聚类算法有很多种(几十种),K-Means是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快;但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。在下面 ,我们描述一下K-means算法的过程,为了尽量不用数学符号,所以描述的不是很严谨:首先输入k的值,即我们希望将数据集经过聚类得到k个分组。从数据集中随机选择k个数据点作为初始大哥(质心,Cent...

weixin_39789792的博客 2万+

【思考模型框架】采用双钻模型:发散(桌面研究/用户访谈)→收敛(需求归类/优先级排序),输出需求规格书、追踪矩阵及产品待办清单。

设计思维双钻模型是一种以用户为中心的需求管理方法,通过"发散-收敛"的双循环确保问题定位准确、方案切实可行。第一钻石(探索→定义)聚焦"找对问题",运用用户访谈、田野调查等方法挖掘真实需求;第二钻石(开发→交付)解决"做对方案",通过原型测试、A/B测试验证可行性。该模型强调低保真验证、多团队协作和真实用户测试,避免资源浪费与伪需求开发。典型应用场景包括产品功能优化、用户体验提升等需要精准落地的需求场景。核心价值在于建立从用户痛点到解决方案的可控闭

奶爸的编程之路,也就一周冷个三天 317

聚类算法中K均值聚类(K-Means Clustering)

它将数据集中的n个数据对象划分为k个不相交的簇,使得簇内的数据对象之间的相似性尽可能高,而不同簇之间的相似性尽可能低。最后,使用Matplotlib库绘制散点图,将每个数据点根据聚类结果进行着色,并将聚类中心点用红色的叉标出。除了介绍K均值聚类的原理和流程之外,还可以进一步探讨K均值聚类算法的一些应用和改进方法。另外,根据实际数据集的维度和特点,可能需要调整代码中的参数和绘图方式。​,然后创建一个KMeans对象,将簇的数量设置为2。​,然后创建一个KMeans对象,将簇的数量设置为2。

牛肉胡辣汤 1097

ORB-SLAM2算法部署验证、原理代码和各种改进方法汇总

本文主要汇总个人学习使用ORB-SLAM2算法中参考的相关博客和代码汇总,以及在ORB-SLAM2算法基础上各个改进方法的汇总。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 742

基于STM32设计的智能门锁(微信小程序+手机APP等多种方式开锁)(188)

当前智能门锁项目是基于STM32微控制器、ESP8266-WIFI模块、OLED显示屏、指纹模块、蓝牙模块、门禁刷卡模块、烟雾检测模块、火光检测模块、温湿度检测模块等硬件设备开发的一种智能门锁系统

1万+

K均值(K-Means)聚类算法简介

K均值算法 K均值算法是一个经典的,被广泛使用的聚类算法。 算法过程 K均值算法中首先选择K个初值。K是用户指定的参数,即希望聚成的簇的个数。每个点指派到最近的质心,指派到一个质心的点集为一个簇。然后更新每个簇的质心,直到簇不发生变化,或质心不发生变化(二者等价),结束算法。 算法: K均值算法 -------------------- 选择K个点作为初始质心。 (STEP 1) repeat 将每个点指派到最近的质心,形成K个簇。 (STEP 2) 重新计算每个簇的质心。 (STEP

星之所在 7685

《AI Coding手册:Claude Code、OpenAI Codex、OpenClaw深度解析与实战指南》

AI编码技术经历了从简单规则匹配到深度神经网络,再到当前智能体(Agent)架构的范式转变。第一阶段:静态代码补全(2010-2018)早期工具如IntelliSense、Emmet基于语法分析和固定模板提供代码提示。这类系统依赖预定义规则,缺乏语义理解能力,仅能处理局部代码片段。第二阶段:统计语言模型(2018-2020)以GPT-2、TabNine为代表,引入基于大规模代码训练的神经语言模型。

AI天才研究院 1033

K均值聚类即K-Means算法详解PPT

K均值聚类即K-Means算法详解PPT 【下载地址】K均值聚类即K-Means算法详解PPT K均值聚类即K-Means算法详解PPT 项目地址: https://gitcode.com/Open-source-document...

gitblog_06663的博客 1046

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

聚类算法之k均值聚类(K-Means)

它的基本思想是,随着聚类数的增加,聚类结果的惯性会逐渐减小,但减小的速度会逐渐变缓。因此,在使用 KMeans 算法进行聚类时,通常会尝试不同的聚类数,并选择惯性最小的聚类结果作为最终的聚类结果。其基本思想是基于数据的内部结构和特点,对其进行组织和分类,使得相同组内的数据点之间的相似性尽量大,而不同组之间的数据点的差异性尽量显著。最终,你会得到K个配送站的最佳位置,以及相应的服务区域。从图中可以观察到,当 K 值在5附近时,曲线的斜率开始变缓,因此,根据肘部法则,5可能是这个数据集的最佳聚类数。

极光喵的博客 5473

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

K-Means(K-均值)聚类算法

聚类,简单来说,就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。而在你聚类之前,你对你的目标是未知的,同样以动物为例,对于一个动物集来说,你并不清楚这个数据集内部有多少种类的动物,你能做的只是利用聚类方法将它自动按照特征分为多类,然后人为给出这个聚类结果的定义(即簇识别)。为了更好的了解自己的用户,产品部门可以采用聚类的方法得到不同特征的用户群体,然后针对不同的用户群体可以对症下药,为他们提供更加精准有效的服务。值的簇划分成两个簇。

sikh_0529的博客 9万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

k均值聚类算法案例 r语言iris_K-means算法原理

聚类的基本思想俗话说"物以类聚,人以群分"聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中。簇内的对象越相似,聚类的效果越好。定义:给定一个有个对象的数据集,聚类将数据划分为个簇,而且这个划分满足两个条件:(1)每个簇至少包含一个对象;(2)每个对象属于且仅属于一个簇。基本思想:对给定的,算法首先给出一个初始的划分方法...

weixin_42516575的博客 1911

10K-Means(K-均值)聚类算法

第 10 章 K-Means(K-均值)聚类算法 一、概述 1.1.聚类的定义 聚类就是对大量未知标注的数据集,按照数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的相似度较小。 聚类算法的重点就是计算数据间的相似度。 1.2.相似度衡量方法 1.2.1.闵可夫斯基距离(Minkowski) 当p=1时,为曼哈顿距离(Manhattan) 当p=2时,为欧式距离(Euc...

yiluohan0307的专栏 820

kmeans聚类算法_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法

作者 | 许文武责编 | 郭芮出品 | 优快云 博客scikti-learn 将机器学习分为4个领域,分别是分类(classification)、聚类(clustering)、回归(regression)和降维(dimensionality reduction)。k-means均值算法虽然是聚类算法中比较简单的一种,却包含了丰富的思想内容,非常适合作为初学者的入门习题。关于 k-means 均值...

weixin_39632693的博客 270

2.k-均值(k-means)聚类算法

2.k-均值(k-means)聚类算法

bgm_Amber的博客 3361

K均值聚类算法(K-Means)

K均值聚类算法(K-Means) . 实验目标 使用Sklearn库操作机器学习 2. 实验主要使用的 ????????????ℎ????????Python 库¶ 名称 版本 简介 Numpy 1.16.0 线性代数 Pandas 0.25.0 数据分析 Matplotlib 3.1.0 数据可视化 SKlearn 0.22.1 机器学习 ​

无心 1万+
上一篇: count(*),count(1),count(列名)的介绍以及区别
下一篇: Apriori算法(频繁集发现以及关联分析)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值