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

前言: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 pltx,y = make_blobs(n_samples=500, n_features=2, centers=3)

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

from sklearn.cluster import KMeansy_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.rhkb.cn/news/178613.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录--这个前端Api管理方案会更好?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 简介 大家好,前端小白一枚,目前接触后台管理系统比较多,经常遇到不同对象的增删改查的接口,如何对Api进行一个有比较好的管理是个问题。在学习偏函数的时…

C#中使用LINQtoSQL管理SQL数据库之添加、修改和删除

目录 一、添加数据 二、修改数据 三、删除数据 四、添加、修改和删除的源码 五、生成效果 1.VS和SSMS原始记录 2.删除ID2和5的记录 3.添加记录ID2、5和8 4.修改ID3和ID4的记录 用LINQtoSQL管理SQL Server数据库时,主要有添加、修改和删除3种操作。 项目中创…

app开发之后需要做什么

在完成app的开发之后,还有一系列的工作需要进行,以确保app的顺利上线和用户的良好体验。下面将从原理和详细介绍两个方面来介绍app开发之后需要做的工作。 一、原理介绍 1. 测试与调试:在app开发完成后,需要进行全面的测试与调试…

[论文笔记]RetroMAE

引言 RetroMAE,中文题目为 通过掩码自编码器预训练面向检索的语言模型。 尽管现在已经在许多重要的自然语言处理任务上进行了预训练,但对于密集检索来说,仍然需要探索有效的预训练策略。 本篇工作,作者提出RetroMAE,一个新的基于掩码自编码器(Masked Auto-Encoder,MAE)…

十种排序算法(1) - 准备测试函数和工具

1.准备工作 我们先写一堆工具&#xff0c;后续要用&#xff0c;不然这些写在代码里可读性巨差 #pragma once #include<stdio.h>//为C语言定义bool类型 typedef int bool; #define false 0 #define true 1//用于交互a和b inline void swap(int* a, int* b) {/*int c *a…

AutoDL 云/本地部署 百川2、GLM2

AutoDL 云上部署 百川2、GLM2 AutoDL 云上部署 百川2、GLM2配置环境体验常见问题huggingface访问不了&#xff0c;使用学术资源加速大文件上传&#xff0c;百度、阿里网盘都可CUDA 空间不足系统盘空间不足省钱绝招软件源 本地部署 百川2、GLM2根据显存大小选模型拉取docker镜像…

MySQL-----事务

事务的概念 事务是一种机制&#xff0c;一个操作序列。包含了一组数据库的操作命令&#xff0c;所有的命令都是一个整体&#xff0c;向系统提交或者撤销的操作&#xff0c;要么都执行&#xff0c;要么都不执行。 是一个不可分割的单位 事务的ACID特点 ACID&#xff0c;是指在可…

【Algorithm】最容易理解的蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)算法

看了不少解读和笔记&#xff0c;本文把最容易理解的解读做个总结。 1. 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method)&#xff0c;是一种“统计模拟方法”。20世纪40年代&#xff0c;为建造核武器&#xff0c;冯.诺伊曼 等人发明了该算法。因赌城蒙特卡洛而得名&#xff0c…

R语言用jsonlite库写的一个图片爬虫

以下是一个使用R语言和jsonlite库下载图片的程序。首先&#xff0c;我们需要导入jsonlite库和options()函数&#xff0c;然后将代理服务器的主机名和端口号设置为"duoip"和"8000"。接着&#xff0c;我们将URL设置为"https://yun.baidu.com/"&…

LeetCode 143. 重排链表(双指针、快慢指针)

题目&#xff1a; 链接&#xff1a;LeetCode 143. 重排链表 难度&#xff1a;中等 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不…

Redis入门指南学习笔记(2):常用数据类型解析

一.前言 本文主要介绍Redis中包含几种主要数据类型&#xff1a;字符串类型、哈希类型、列表类型、集合类型和有序集合类型。 二.字符串类型 字符串类型是Redis中最基本的数据类型&#xff0c;它是其他4种数据类型的基础&#xff0c;其他数据类型与字符串类型的差别从某种角度…

欧科云链研究院:如何降低Web3风险,提升虚拟资产创新的安全合规

在香港Web3.0行业&#xff0c;技术推动了虚拟资产投资市场的快速增长&#xff0c;但另一方面&#xff0c;JPEX诈骗案等行业风险事件也接连发生&#xff0c;为Web3行业发展提供了重要警示。在近期的香港立法会施政报告答问会上&#xff0c;行政长官李家超表示&#xff0c;与诈骗…

自己动手实现一个深度学习算法——三、神经网络的学习

文章目录 1.从数据中学习1&#xff09;数据驱动2&#xff09;训练数据和测试数据 2.损失函数1)均方误差2)交叉熵误差3)mini-batch学习 3.数值微分1&#xff09;概念2&#xff09;数值微分实现 4.梯度1&#xff09;实现2&#xff09;梯度法3&#xff09;梯度法实现4&#xff09;…

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

从零开始的目标检测和关键点检测&#xff08;二&#xff09;&#xff1a;训练一个Glue的RTMDet模型 一、config文件解读二、开始训练三、数据集分析四、ncnn部署 从零开始的目标检测和关键点检测&#xff08;一&#xff09;&#xff1a;用labelme标注数据集 从零开始的目标检测…

[H5动画制作系列]坐标转化问题一次搞清,一了百了

前言: 本次演示的坐标包括三个坐标层&#xff1a; 1.舞台上的某位置相对于舞台的全局坐标的坐标(黑色)。 2.舞台上蓝色实例内部某位置相对于该蓝色实例内部局部坐标的坐标(蓝色)。 3.舞台上蓝色实例内部的红色实例内部某位置相对该红色实例内部局部坐标的坐标(红色)。 舞台…

Day18力扣打卡

打卡记录 寻找重复数&#xff08;双指针&#xff09; 链接 Floyd判圈法&#xff0c;先用快慢指针以不同速率进行移动&#xff0c;最终一定会出现相遇点&#xff0c;然后在使一指针从初始开始&#xff0c;两指针再以同步调移动&#xff0c;再次相遇的点一定为循环开始的点位。 …

赋能制造业高质量发展,释放采购数字化新活力——企企通亮相武汉2023国际智能制造创新论坛

摘要 “为应对成本上升、供应端不稳定、供应链上下游协同困难、决策无数据依据等问题&#xff0c;利用数字化手段降本增效、降低潜在风险十分关键。在AI等先进技术发展、供应链协同效应和降本诉求等机遇的驱动下&#xff0c;采购供应链数字化、协同化成为企业激烈竞争的优先选…

链表的介绍

链表的结构和定义 介绍 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 链表&#xff08;linked list&#xff09;是一种经典的线性数据结构&#xff0c;它可以用来存储一组具有顺序性…

执行npm install时老是安装不成功node-sass的原因和解决方案

相信你安装前端项目所需要的依赖包&#xff08;npm install 或 yarn install&#xff09;时&#xff0c;有可能会出现如下报错&#xff1a; D:\code\**project > yarn install ... [4/4] Building fresh packages... [-/6] ⠁ waiting... [-/6] ⠂ waiting... [-/6] ⠂ wai…

oracle (9)Storage Relationship Strut

目录 一、基础知识 1、数据库逻辑结构图 2、Types of Segments 段的类型 3、Storage Clause Precedence 存储条款的优先顺序 4、Extent Alloc & Dealloc 区的范围分配和取消分配 5、 Used and Free Extents 使用和自由区 6、Database Block 数据库块 7、Multiple B…