第2篇 机器学习基础 —(4)k-means聚类算法

news2025/7/28 14:03:55

前言:Hello大家好,我是小哥谈。聚类算法是一种无监督学习方法,它将数据集中的对象分成若干个组或者簇,使得同一组内的对象相似度较高,不同组之间的对象相似度较低。聚类算法可以用于数据挖掘、图像分割、文本分类等领域。常见的聚类算法包括K-Means、层次聚类、DBSCAN、AP聚类、谱聚类等。本节课就简单介绍k-means聚类算法!~🌈

前期回顾:

               第2篇 机器学习基础 —(1)机器学习概念和方式

               第2篇 机器学习基础 —(2)分类和回归

               第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn

              目录

🚀1.什么是聚类

🚀2.K-Means聚类算法

🚀3.K-means聚类优缺点

🚀4.聚类数据生成器

🚀1.什么是聚类

聚类算法是一种无监督学习方法,它将数据集中的对象分成若干个组或者簇,使得同一组内的对象相似度较高,不同组之间的对象相似度较低。聚类算法可以用于数据挖掘、图像分割、文本分类等领域。常见的聚类算法包括K-Means层次聚类DBSCANAP聚类谱聚类等。其中,K-Means是一种基于距离的聚类算法,层次聚类是一种基于树形结构的聚类算法,DBSCAN是一种基于密度的聚类算法,AP聚类是一种基于相似度传播的聚类算法,谱聚类是一种基于图论的聚类算法。每种聚类算法都有其适用的场景和优缺点。

说明:♨️♨️♨️

聚类类似于分类,不同的是聚类所要求划分的类是未知的,也就是说不知道应该属于哪类,而是通过一定的算法自动分类。在实际应用中,聚类是一个将数据集中在某些方面相似的数据中,并进行分类组织的过程(简单地说,就是将相似数据聚在一起)。

聚类的主要应用领域:

商业:聚类分析被用来发现不同的客户群,并且通过购买模式刻画不同客户群的特征。

生物:聚类分析被用来对动植物分类和对基因进行分类,获取对种群固有结构的认识。

保险行业:聚类分析通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型、价值和地理位置来判断一个城市的房产分组。

因特网:聚类分析被用来在网上进行文档归类。

电子商务:聚类分析在电子商务网站建设数据挖掘中也是很重要的一个方面,通过分组聚类出具有相似浏览行为的客户,并分析客户的共同特征,可以更好地帮助电商了解自己的客户,向客户提供更合适的服务。

等等......🍉 🍓 🍑 🍈 🍌 🍐


🚀2.K-Means聚类算法

K-Means是一种常见的聚类算法,它的目标是将数据集分成K个簇,使得同一簇内的数据点相似度较高,不同簇之间的相似度较低。K-Means算法的基本思路是随机选择K个中心点,然后将每个数据点分配到距离最近的中心点所在的簇中,接着重新计算每个簇的中心点,重复以上步骤直到簇不再发生变化或达到预设的迭代次数。K-Means算法的优点是简单易懂,计算速度快,但是需要预先指定簇的数量K,且对于不同的初始中心点选择可能会得到不同的聚类结果。

k-means 算法是一种无监督学习算法,目的是将相似的对象归到同一个簇中。簇内的对象越相似,聚类的效果就越好。传统的聚类算法包括划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法。本节主要介绍K-means 聚类算法,它是划分方法中较典型的一种,也可以称为k均值聚类算法

说明:♨️♨️♨️

K-means聚类也称为k均值聚类,是著名的划分聚类的算法,由于简洁性和高效率,使得它成为所有聚类算法中应用最为广泛的一种。k均值聚类是给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法将根据某个距离函数反复把数据分入k个聚类中。

K-Means聚类流程:

随机选取k个点作为初始质心(质心即簇中所有点的中心),然后将数据集中的每个点分配到一个簇中。具体来说,为每个点找距其最近的质心,并将其分配给该质心所对应的簇。这一步完成之后,每个簇的质心更新为该簇所有点的平均值。这个过程将不断重复直到满足某个终止条件。

终止条件可以是以下中的任何一个:

  1. 没有(或最小数目)对象被重新分配给不同的聚类。
  2. 没有(或最小数目)聚类中心再发生变化。
  3. 误差平方和局部最小。

通过以上介绍,相信您对K-means聚类算法已经有了初步的认识,而在Python中应用该算法无需手动编写代码,因为Python的第三方模块Scikit-Learn已经帮我们写好了,在性能和稳定性上会好得多,只需在程序中调用即可,没必要自己造轮子。

关于Scikit-Learn的介绍及应用,请参考文章:

第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn


🚀3.K-means聚类优缺点

K-means是一种常用的聚类算法,其优缺点如下:

优点:

  1. 原理简单,容易实现。
  2. 可解释度较强。
  3. 可以通过加速算法来提高效率。
  4. 具有良好的可扩展性,适用于大规模数据集。
  5. 聚类效果较好,适用于一些简单的数据集。

缺点:

  1. K值很难确定。
  2. 容易陷入局部最优解。
  3. 对噪音和异常点敏感。
  4. 需要样本存在均值,限定数据种类。
  5. 聚类效果依赖于聚类中心的初始化。
  6. 对于非凸数据集或类别规模差异太大的数据效果不好。

🚀4.聚类数据生成器

Scikit-Learn 中的make_blobs方法用于生成聚类算法的测试数据,直观地说,make_blobs 方法可以根据用户指定的特征数量、中心点数量、范围等来生成几类不同的数据,这些数据可用于测试聚类算法的效果。

make_blobs 方法的语法如下:

sklearn.datasets.make_blobs(n_samples=100,n_features=2,centers=3,cluster_std=1.0,center_box=(-10.0,10.0),shuffle=True,random_state=None)

常用参数说明:

n_samples:待生成的样本的总数。

n_features:每个样本的特征数。

centers:类别数。

cluster_std:每个类别的方差。例如,生成两类数据,其中一类比另一类具有更大的方差,可以将cluster_std 参数设置为[1.0,3.0]。

举例:

生成用于聚类的数据(500 个样本,每个样本中含有2 个特征),程序代码如下:

from sklearn.datasets import make_blobs
from matplotlib import plt

x,y = make_blobs(n_samples=500, n_features=2, centers=3)

接下来,通过K-Means 方法对测试数据进行聚类,形成散点图,程序代码如下:

from sklearn.cluster import KMeans

y_pred = KMeans(n_clusters=4, random_state=9).fit_predict(x)
plt.scatter(x[:, 0], x[:, 1], c=y_pred)
plt.show()

运行程序,效果如下图所示:

从分析结果得知:相似的数据聚在一起,分成了4堆,也就是4类,并以不同的颜色显示,看上去更加清晰直观。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nodejs+php+python+微信小程序-基于安卓android的北京地铁票务APP-计算机毕业设计

根据现实中在北京地铁票务方面的需求,并对该系统进行了仔细的研究,将系统权限按照管理者和用户这两种类型进行了区分。 (1)用户功能需求   用户进入APP可以进行系统首页、地铁线路、我的等操作,在我的页面可以对我的…

NLP实践——中文指代消解方案

NLP实践——中文指代消解方案 1. 参考项目2. 数据2.1 生成conll格式2.2 生成jsonline格式 3. 训练3.1 实例化模型3.2 读取数据3.3 评估方法3.4 训练方法 4. 推理5. 总结 1. 参考项目 关于指代消解任务,有很多开源的项目和工具可以借鉴,比如spacy的基础模…

【强化学习】12 —— 策略梯度(REINFORCE )

文章目录 前言策略梯度基于策略的强化学习的优缺点Example:Aliased Gridworld策略目标函数策略优化策略梯度利用有限差分计算策略梯度得分函数和似然比策略梯度定理蒙特卡洛策略梯度(Monte-Carlo Policy Gradient)Puck World Example Softmax随机策略 代…

力扣刷题-栈-逆波兰表达式求值

150. 逆波兰表达式求值 根据 逆波兰表示法,求表达式的值。 有效的运算符包括 , - , * , / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达…

YOLO算法改进3【中阶改进篇】:添加HorNet卷积模块

论文地址:https://arxiv.org/pdf/2207.14284.pdf 源码地址:https://github.com/raoyongming/HorNet. HorNet是在Swin transformer结构的基础上,结合大核思想提出的新的网络结构模块,使用该模块,作者在ImageNet-1k数据集上做分类,分割以及检测任务都在当时达到了SOTA的效果…

基于Langchain+向量数据库+ChatGPT构建企业级知识库

▼最近直播超级多,预约保你有收获 近期直播:《基于 LLM 大模型的向量数据库企业级应用实践》 1— LangChain 是什么? 众所周知 OpenAI 的 API 无法联网的,所以如果只使用自己的功能实现联网搜索并给出回答、总结 PDF 文档、基于某…

【机器学习】二、决策树

目录 一、决策树定义: 二、决策树特征选择 2.1 特征选择问题 2.2 信息增益 2.2.1 熵 2.2.2 信息增益 三、决策树的生成 3.1 ID3算法 3.1.1理论推导 3.1.2代码实现 3.2 C4.5 算法 3.2.1理论推导 ​ 3.2.2代码实现 四、决策树的剪枝 4.1 原理 4.2 算法思路&#xff1a…

VMware虚拟网络连接的三种方式

桥接模式(Bridged) 什么是桥接模式?桥接模式就是将主机网卡与虑拟机虑拟的网卡利用虑拟网桥进行通信。在桥接的作用下,类似于把物理主机虑拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当…

cocos creator,vscode打开脚本报错,找不到cc模块问题

cocosCreator,用VSCODE打开写脚本代码的时候,会误报飘红,但实际上能正常运行。 我的版本是当前最新版本的3.8.1 解决方案: 在CocosCreator 的安装目录下 C:\ProgramData\cocos\editors\Creator\3.8.1\resources\resources\3d\engine\bin.dec…

Python---排序算法

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 Python中的排序算法用于对数据进行排序。排序算法可以使数据按照一定的规则进行排列,以便于数据的查找、统计、比较等操作。在数据分析、机器学习、图形计算等领域&#xff0c…

企业中很多老师傅都说没前途,该不该放弃嵌入式单片机行业?

今日话题,很多老师傅都说没前途,该不该放弃嵌入式单片机行业?许多新手在探讨嵌入式和单片机行业时,往往过于强调技术技能,而忽略了 行业的广度和深度。事实上,行业内有各种不同的产品领域,而你的…

IBM引入模块化设计助力波音与摩根大通快速实现量子计算服务

​(图片来源:网络) 经典计算机具有局限性,无法完成某些特定任务,例如准确预测金融市场或开发药物来对抗新兴疾病,而量子计算能打破“僵局”。部署IBM Quantum量子系统的负责人Chris Lirakis 说&#xff1a…

#stm32整理(一)flash读写

以这篇未开始我将进行stm32学习整理为期一个月左右完成stm32知识学习整理内容顺序没有一定之规写到哪想到哪想到哪写到哪,主要是扫除自己知识上的盲区完成一些基本外设操作。 以stm32f07为例子进行flash读写操作 stm32flash简介 参考资料正点原子和野火开发手册 …

国际权威媒体聚焦:孙宇晨和波场TRON在迪拜荣获加密行业重磅奖项

近日,在迪拜举行的区块链生态大会(Blockchain Life Conference)上,波场TRON创始人、火币HTX全球顾问委员会委员孙宇晨斩获“年度加密企业家”称号,波场TRON荣膺“年度最佳 Layer 1”大奖。这一消息迅速得到彭博社、雅虎财经、美联社和法国最大媒体之一Le Figaro等国际权威媒体的…

决赛入围名单公示!“山东工行杯”山东省第五届数据应用创新创业大赛

“山东工行杯”山东省第五届数据应用创新创业大赛8月30日启动以来,共计吸引2651人、1235支团队报名,累计收到作品1451件。 10月18日—24日,大赛组委会本着“公平、公正、公开”的原则,邀请到来自省内外各高校、企事业单位的、在数…

Python 应用 之 转换音频格式

目录 一、python音频转换 1、pydub 音频包安装 2、 ffmpeg安装 1)、解压后,添加到环境变量中 2)、可以直接放在python安装目录下 3、python程序 1)、引入相关包 2)、重命名 3)、to Mp3 4&#xf…

基于差分进化算法的无人机航迹规划-附代码

基于差分进化算法的无人机航迹规划 文章目录 基于差分进化算法的无人机航迹规划1.差分进化搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用差分进化算法来优化无人机航迹规划。 …

化肥厂的污水处理设备需要哪些

化肥厂的污水处理设备需要包括多级反渗透系统、生物处理系统、滤网、沉淀池、活性炭吸附器、曝气池和膜分离器等。 这些设备的主要作用是处理化肥厂产生的大量污水,包括对污水进行物理、化学和生物处理,以去除其中的污染物质和有害成分,达到…

Vue过渡动画详解及使用场景

文章目录 Vue过渡和动画的主要概念1. `<transition>` 组件2. `<transition-group>` 组件3. CSS 过渡类4. 过渡钩子函数Vue过渡和动画应用场景1. 页面切换动画2. 表单验证反馈3. 列表排序和过滤4. 模态框和对话框✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的…

C语言实现贪吃蛇小游戏

#include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #include <stdlib.h> #include <conio.h> #include <time.h> #define PI 3.14 #define NODE_WIDTH 40 //绘制蛇的节点 typedef struct {int x;int y;…