第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 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.niftyadmin.cn/n/5140707.html

相关文章

[软件工具]解决朋友圈烦恼

解决朋友圈烦恼 朋友圈转发截图生成工具 https://ourboy.cn/dz/ 朋友圈转发截图生成工具 https://akarin.dev/WechatMomentScreenshot/ 集赞(使用说明) 最好用的朋友圈集赞工具 https://blog.itakeo.com/blog/?p915

深入了解进口跨境商城源码的电商开发的关键

随着全球电子商务的快速发展,进口跨境商城源码的电商开发逐渐成为一种趋势。本文将深入探讨进口跨境商城源码的电商开发的关键,包括需求分析、技术实现、运营推广、风险控制等方面。 一、需求分析 在进口跨境商城源码的电商开发中,需求分析是…

网络安全专业大学生一定要考的证书

在数字经济时代,网络安全成为了至关重要的一环,社会对网络安全技术人才的需求也在不断增长。网络安全行业以其独特的薪酬、福利和发展机遇吸引了众多优秀人才。 在市场上,大多数国家认可的证书都需要一定的工作经验才能获得。然而&#xff0c…

多测师肖sir_高级金牌讲师_性能测试实战

一、添加聚合报告 聚合报告: jmeter聚合报告名词解释 聚合报告:生成此次性能的测试数据报告 Samples:测试一共发出的请求 ,虚拟用户循环次数 Average:平均响应时间,是单个Request的平均响应时间 Median&am…

新建包含cuda和cudnn的docker

背景:服务器的cudnn版本太低了,没有权限去修改。故新建包含cuda和cudnn的docker 步骤 一、拉取镜像及创建docker 拉取相关的镜像 从镜像列表选出相关版本的镜像https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md …

Python-turtle绘画出HelloKitty动漫人物(有趣小游戏)

Python-turtle绘画出HelloKitty(有趣小游戏) 效果图安装库Python代码 效果图 安装库 常用镜像源汇总:1. 豆瓣http://pypi.douban.com/simple/2. 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 3. 清华大学开源镜像站 https…

Springboot引入mybatis-plus及操作mysql的json字段

springboot引入mybatis-plus&#xff0c;创建springboot项目省略 pom文件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency> <!…

稳固防线:迅软DSE终端防泄密保护助力云视频行业

客户简要介绍 某上市公司专注于云视频领域&#xff0c;涵盖视频摄像机、扫地机、穿戴设备、车联网以及数据存储与应用等多个领域。此公司积极探索云娱乐、云游戏、投影仪、虚拟现实以及云制造等新兴领域。 企业的重要诉求 公司研发部进行各类云视频设备的开发工作&#xff0c;产…