当前位置: 首页 > news >正文

Python 机器学习入门之K-Means聚类算法

系列文章目录

第一章 Python 机器学习入门之线性回归

K-Means聚类算法

  • 系列文章目录
  • 前言
  • 一、K-Means简介
    • 1、定义
    • 2、例子
    • 3、K-Means与KNN
  • 二、 K-Means实现
    • 1、步骤
    • 2、优化
      • 2.1 初始化优化之K-Means++
      • 2.2 距离优化之elkan K-Means
  • 三、优缺点
    • 1、优点
    • 2、缺点

前言

学完K近邻算法,让我们再来看看和它有一定相似程度的K-Means聚类算法

一、K-Means简介

1、定义

wiki定义:
k-均值算法(英文:k-means clustering)源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-均值聚类的目的是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。

这里说下聚类和簇的概念,使用上述算法会把训练中的数据划分成若干个组,每个组就被称为簇,而这种学习方式或者说分类过程就被称为聚类;但是很多资料上往往也会把聚类视作簇,就如上述定义一样。

2、例子

简单来说,K聚类的核心点是找到K个中心点,以此为中心辐射开来,形成K个簇;

举个例子,有些大学在入学时会让学生填写一些个人作息和兴趣爱好来做宿舍分配,其中就可以使用K-Means聚类算法,假设要分配K个宿舍,我们可以先随机出K个学生,然后在此基础上分配剩下的学生,剩下的学生找到与自己个人作息和兴趣爱好相近的K个学生之一;最后我们就可以得到一个相对较好的宿舍环境,熬夜打游戏的可以一起组团开黑,早起学习的可以一起携手前去图书馆,大家都获得了美好的未来。
在这里插入图片描述

3、K-Means与KNN

前言里提到K-Means和KNN有一定相似程度,这是因为二者在运行过程中都用到了最近邻思想,都是找到离某个点最近的点;但是它们不能统一而论,这是它们的区别点

  1. KNN是有监督学习,是有对应的类别输出的;K-Means是无监督学习,没有样本输出
  2. KNN是找离当前点最近的K个点,K-Means是找离当前点最近的K个中心点之一

二、 K-Means实现

1、步骤

  1. 选取初始化的k个样本设为聚类中心a=a1,a2,a3…ak;

  2. 对于数据集的每个数据点Xi,计算它到k个聚类中心的距离(这里通常采用我们在上一篇k近邻中提到的欧式距离来计算),然后将它分到距离最小的聚类中心所对应的簇中;

  3. 针对每个聚类中心aj,当有新的样本加入时,重新计算它的质心(中心点)
    在这里插入图片描述

  4. 重复上述2、3步直至达到终止条件

2、优化

2.1 初始化优化之K-Means++

传统K-Means是随机选择中心点,这样有很大概率会花费更多的时间,因此在选择初始点上我们可以使用更好的方法,那就是K-Means++;

相比于传统K-Means,K-Means在选择新的初始点时都会参考之前选取得初始点,因为我们知道最后得出的结果是K个簇,我们希望每个簇之间的距离越远越好,而这点就可以应用到初始点选择上,我们在选择新的初始点希望找到离之前的初始点越远越好;

步骤:

  1. 随机选择一个初始点a1
  2. 对于数据集中每一个点Xi,计算它到之前每个聚类中心aj的距离D(xi),找到距离最大的那个,但是这只适用于单个距离中心的情况;当面对多个聚类中心,我们使用概率的方式(下式)来找到最可能距离前j个聚类中心最远的点
    在这里插入图片描述
  3. 重复第二步直至找到K个聚类中心

2.2 距离优化之elkan K-Means

传统K-Means中,每次迭代都需要计算机所有样本到所有质心的位置,这样运行时间过长;elkan K-Means算法则是对这一步进行改进,减少不必要的距离的计算;它主要的使用的思想是:利用两边之和大于等于第三边,两边之差小于第三边的三角形的性质,因此达到减少距离计算的目的。

  1. 对于一个样本点x和两个质心a1,a2;我们先计算出这两个质心的距离D(a1,a2),如果2D(a1,x)<=D(a1,a2),那么D(a2,x)>=D(a1,x),就可以不计算D(a2,x),减少一步计算距离
  2. 对于一个样本点x和两个质心a1,a2,我们可以得到D(a2,x)>=max(0,D(a1,x)-D(a1,a2))

第二条规律其实有点难懂,我查阅了下资料,大概是说利用两边之差小于第三边推导出来,然后在此基础上来利用该公式能判断是否可以不用计算D(a2,x)

该方法可以一定程度上提升传统K-Means聚类算法的迭代速度,但是如果样本的特征是稀疏的,并具有缺失值,由于有些距离无法计算,则无法使用该算法。

三、优缺点

1、优点

  1. 简单易懂,算法收敛速度快
  2. 算法的可解释性强

2、缺点

  1. k值的选取一般需要先验经验(专家经验)
  2. 采用迭代的方法,得到的结果只是局部最优
  3. 由于需要计算质心到所有点的距离,对噪音和异常点比较敏感
  4. 如果各隐含类别的数据量严重失衡,或者个各隐含类别的方差不同,则聚类效果不佳

相关文章:

Python 机器学习入门之K-Means聚类算法

系列文章目录 第一章 Python 机器学习入门之线性回归 K-Means聚类算法 系列文章目录前言一、K-Means简介1、定义2、例子3、K-Means与KNN 二、 K-Means实现1、步骤2、优化2.1 初始化优化之K-Means2.2 距离优化之elkan K-Means 三、优缺点1、优点2、缺点 前言 学完K近邻算法&a…...

【jmeter】接口测试流程

1、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目&#xff0c;即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性&#xff0c;可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程&#xff0c;允许通过多个线程并发取样或通过独…...

RTOS(6)任务管理

任务状态理论 我们是怎么实现&#xff0c;两个同优先级的任务之间交替执行的呢&#xff1f; 任务切换的基础&#xff1a;tick中断&#xff01; tick为1ms一个周期&#xff0c;可以通过修改时钟配置修改&#xff1b; running&#xff1a;正在进行的任务3为running&#xff…...

【UE5】 ListView使用DataTable数据的蓝图方法

【UE5】 ListView使用DataTable数据的蓝图方法 ListView 是虚幻引擎中的一种用户界面控件&#xff0c;用于显示可滚动的列表。它可以用于显示大量的数据&#xff0c;并提供了各种功能和自定义选项来满足不同的需求。 DataTable是虚幻引擎中的一种数据表格结构&#xff0c;用于存…...

Anthropic全球上线AI语言模型Claude 2;多模态系统:融合文本和图像的新前沿

&#x1f989; AI新闻 &#x1f680; Anthropic全球上线AI语言模型Claude 2&#xff0c;编程、数学、推理能力大幅提升 摘要&#xff1a;Anthropic在全球正式上线了AI语言模型Claude 2。相比前代版本&#xff0c;Claude 2在编程、数学、推理等方面都有大幅提升&#xff0c;支…...

pdf压缩文件怎么压缩最小?

pdf压缩文件怎么压缩最小&#xff1f;我们很多项目介绍或是学术的报告都是采用的这个pdf格式&#xff0c;那么我们在存储或是需要进行分享的时候&#xff0c;可能就会因为文件过大而导致无法打开或是发送了。那么就需要将其进行压缩。PDF文件压缩方法很多&#xff0c;pdf压缩文…...

开源智能体来啦!港大团队发布OpenAgents,可以搞数据分析、聊天、支持200+插件

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 港大的研究团队最近发布了一个新的开源 Agent 框架&#xff0c;名为 OpenAgents. 它可以用于实际用户场景&#xff0c;特别是在使用自然语言执行复杂任务的情况下。先前的语言智能体框架主要关注概念验证或者供开发人员使用&…...

Prometheus metrics数据抓取解析

Prometheus node的监控数据如链接展示&#xff0c;我们希望能更加方便的看到监控数据&#xff0c;shodan对Prometheus metrics 的数据做了格式化处理。172.96.3.215:9100/metricshttp://172.96.3.215:9100/metrics 本文我自己实现了一个命令行工具&#xff0c;可以输出类shodan…...

【算法训练-排序算法 三】【排序应用】合并区间

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【合并区间】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

【iOS】计算器仿写

文章目录 前言一、构建View界面二、Model中进行数据处理三、Controller层实现View与Model交互总结 前言 在前两周组内进行了计算器的仿写&#xff0c;计算器仿写主要用到了MVC框架的思想以及数据结构中用栈进行四则运算的思想&#xff0c;还有就是对OC中的字符串进行各种判错操…...

华为认证 | 华为HCIE认证该怎样备考?

华为HCIE认证是华为认证的最高级别&#xff0c;拥有了华为HCIE认证就代表拥有了华为官方认可的专家级技术水平。 因此HCIE认证的考试难度是非常高的&#xff0c;备考华为认证HCIE需要一定的准备和规划。 整理了一些简单易懂的指南&#xff0c;希望对各位备考的小伙伴一些帮助…...

10月份stable diffusion animatediff等插件使用指南,又来更新了

插件一直会更新&#xff0c;包含了基本市面上流行的90%插件&#xff0c;好用的插件更是不会错过&#xff0c;往期插件请看往期文章&#xff0c;如果你没有时间一直关注sd更新的进展&#xff0c;请关注我&#xff0c;一个月用几个小时看一下我的文章&#xff0c;最短时间跟进sd。…...

抓包工具charles修改请求和返回数据

数据篡改的主要使用场景&#xff1a; &#xff08;1&#xff09;mock场景&#xff0c;mock入参和返回值参数&#xff0c;实现mock测试 &#xff08;2&#xff09;安全测试&#xff0c;对于支付金额等比较重要的字段&#xff0c;可以修改请求参数来进行安全测试 1.首先选择要…...

matlab中绘制 维诺图(Voronoi Diagram)

1.专业术语&#xff08;相关概念&#xff09;&#xff1a; 基点Site&#xff1a;具有一些几何意义的点 细胞Cell&#xff1a;这个Cell中的任何一个点到Cell中基点中的距离都是最近的&#xff0c;离其他Site比离内部Site的距离都要远。 Cell的划分&#xff1a;基点Site与其它的…...

Mybatis TypeHandler 介绍及使用

Mybatis TypeHandler类型转换器是负责Java类和jdbc类型之间的转换 主要涉及到下面这几个类&#xff1a; TypeHandler 类型转换器的顶层接口BaseTypeHandler 抽象类继承自TypeHandler&#xff0c;Mybatis中所有的类型转换器实现均继承他。TypeHandlerRegistry 类型转换器注册器…...

Linux SVN 命令详解

1、将文件 checkout 到本地目录 svn checkout path&#xff08;path是服务器上的目录&#xff09; 例如&#xff1a;svn checkout svn://192.168.1.1/pro/domain 简写&#xff1a;svn co 2、往版本库中添加新的文件 svn add file 例如&#xff1a;svn add test.php(添加test.…...

Maven依赖引入的优先机制

xxxx待持续更新...

全开源无加密跨境电商购物网站系统源码(无货源模式+多语言+多货币)

在全球化的时代背景下&#xff0c;跨境电商成为了越来越受欢迎的消费方式&#xff0c;而建立一个源码无加密多语言跨境购物网站系统是一个具有挑战性的任务&#xff0c;但完全可行。以下是这个过程的一些主要步骤&#xff1a; 1. 确定需求和功能规划&#xff1a;先确定网站需要…...

Python常用视频编辑操作——读取与保存视频、更改帧数、拼接视频、视频语音合并、视频与图像互转等

1.更改视频帧数 降低视频帧数&#xff0c;简单的操作只能降低视频帧数&#xff0c;如果要增加视频帧数&#xff0c;那就要使用深度学习进行插帧处理&#xff1a; import cv2 from moviepy.editor import * def change_fps(inpt_path,output_path,fps):# 加载视频video Video…...

从javascript到vue再到react的演变

当提到前端开发中的框架时&#xff0c;JavaScript、Vue.js和React.js是三个最常见的名词。它们代表了Web开发中不同的技术选择和演变过程。本文将探讨JavaScript从原生到Vue.js再到React.js的演变&#xff0c;以及每个阶段的特点和优势。 JavaScript: 动态语言的基础 JavaScr…...

50个渗透(黑客)常用名词及解释

目录 前言一、渗透测试1. 渗透测试&#xff1a;2. 黑盒测试&#xff1a;3. 白盒测试&#xff1a;4. 社会工程学&#xff1a;5. 缓冲区溢出&#xff1a;6. 拒绝服务攻击&#xff1a;7. DDoS攻击&#xff1a;8. XSS攻击&#xff1a;9. CSRF攻击&#xff1a;10. SQL注入&#xff1…...

开源游戏引擎和模拟器的项目合集 | 开源专题 No.38

yuzu-emu/yuzu Stars: 26.2k License: GPL-3.0 yuzu是一款全球最受欢迎的开源Nintendo Switch模拟器&#xff0c;由Citra创建者编写。它采用C语言编写&#xff0c;并具有可移植性&#xff0c;在Windows和Linux上进行积极维护。该模拟器能够全速运行大多数商业游戏&#xff0c…...

ELK + Filebeat 分布式日志管理平台部署

ELK Filebeat 分布式日志管理平台部署 1、前言1.1日志分析的作用1.2需要收集的日志1.3完整日志系统的基本特征 2、ELK概述2.1ELK简介2.2为什么要用ELK?2.3ELK的组件 3、ELK组件详解3.1Logstash3.1.1简介3.1.2Logstash命令常用选项3.1.3Logstash 的输入和输出流3.1.4Logstash配…...

Stable Diffusion原理

一、Diffusion扩散理论 1.1、 Diffusion Model&#xff08;扩散模型&#xff09; Diffusion扩散模型分为两个阶段&#xff1a;前向过程 反向过程 前向过程&#xff1a;不断往输入图片中添加高斯噪声来破坏图像反向过程&#xff1a;使用一系列马尔可夫链逐步将噪声还原为原始…...

2022年亚太杯APMCM数学建模大赛A题结晶器熔剂熔融结晶过程序列图像特征提取及建模分析求解全过程文档及程序

2022年亚太杯APMCM数学建模大赛 A题 结晶器熔剂熔融结晶过程序列图像特征提取及建模分析 原题再现&#xff1a; 连铸过程中的保护渣使钢水弯液面隔热&#xff0c;防止钢水在连铸过程中再次氧化&#xff0c;控制传热&#xff0c;为铸坯提供润滑&#xff0c;并吸收非金属夹杂物…...

金融网站如何做好安全防护措施?

联网的发展为当代很多行业的发展提供了一个更为广阔的平台&#xff0c;而对于中国的金融业来说&#xff0c;互联网金融这一新兴理念已经为 人们所接受&#xff0c;且发展迅速。我们也都知道金融行业对互联网技术是非常严格的&#xff0c;这对互联网的稳定性和可靠性提出了较高的…...

2023年中国恋爱社区未来发展趋势分析:多元化盈利模式实现可持续发展[图]

恋爱社区指满足情侣之间互动、记录及娱乐需求&#xff0c;以维护情侣恋爱关系的虚拟社区。恋爱社区行业主要以线上APP的虚拟形式为用户提供相关服务&#xff0c;其业务包括情侣记录、情侣互动、情侣娱乐、公共社区、线上购物、增值服务。 恋爱社区主要业务 资料来源&#xff1…...

Elasticsearch:生成式人工智能带来的社会转变

作者&#xff1a;JEFF VESTAL 了解 Elastic 如何走在大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中&#xff0c;帮助用户将 LLM 提升到新的高度。 iPhone 社会转变&#xff1a;新时代的黎明 曾几何时&#xff0c;不久前…...

服务器数据恢复-RAID5中磁盘被踢导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境&#xff1a; 一台3U的某品牌机架式服务器&#xff0c;Windows server操作系统&#xff0c;100块SAS硬盘组建RAID5阵列。 服务器故障&#xff1a; 服务器有一块硬盘盘的指示灯亮黄灯&#xff0c;这块盘被raid卡踢出后&#xff0c;raid阵列崩溃。 服务器数据…...

负荷不均衡问题分析处理流程

一、负荷不均衡分析 负荷不均衡判断标准&#xff1a;4G同覆盖扇区内存在无线利用率大于50%的小区&#xff0c;且两两小区间无线利用率差值大于30%&#xff0c;判定为4G负荷不均衡扇区&#xff1b;5G同覆盖扇区内存在无线利用率大于50%的小区&#xff0c;且两两小区间无线利用率…...