Kmeans聚类算法简述

embedded/2024/10/25 9:09:59/

Kmeans聚类算法

1、概述

是一种无监督学习算法,根据样本之间的相似性将样本划分到不同的类别中,不同的相似度计算方式,会得到不同的聚类结果,常用的相似度计算方式有欧式距离。

目的是在没有先验条件知识的情况下,自动发现数据集中的内在结构和模式。

使用不同的聚类准则,产生的聚类结果不同。

2、算法分类

  • 根据聚类颗粒度分类:
  • 根据实现方法分类:
    • K-means:根据质心分类,主要介绍K-means,通用普遍
    • 层次聚类:对数据进行逐层划分,直到达到聚类的类别个数
    • DBSCAN聚类是一种基于密度的聚类算法
    • 聚类是一类基于图论的聚类算法

3、相关api

导包:

sklearn.cluster.KMeans	# Kmeans依赖包
sklearn.datasets.make_blobs	# 生成数据

执行:

# 1.导入工具包
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
# calinski_harabaz_score CH系数,分数越高,聚类效果越好
from sklearn.metrics import calinski_harabasz_score  # 2.构建数据集 1000个样本,每个样本2个特征 4个质心蔟数据标准差[0.4, 0.2, 0.2, 0.2]
x, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]],cluster_std = [0.4, 0.2, 0.2, 0.2], random_state=22)
plt.figure()
plt.scatter(x[:, 0], x[:, 1], marker='o')
plt.show()# 3.使用k-means进行聚类
y_pred = KMeans(n_clusters=3, random_state=22).fit_predict(x)# 4.展示聚类效果
plt.scatter(x[:, 0], x[:, 1], c=y_pred)
plt.show() 	# 5.模型评估, 使用CH方法评估 
print(calinski_harabasz_score(x, y_pred))

4、批判指标

(一)、SSE-误差平方和

(1)、定义

S S E = ∑ i = 1 k ∑ p ∈ C i ∣ p − m i ∣ 2 K 表示聚类中心的个数 C i 表示簇 p 表示样本 m i 表示簇的质心 SSE=\sum_{i=1}^k\sum_{p\in C_i}|p-m_i|^2\\ K表示聚类中心的个数\\ C_i表示簇\\ p表示样本\\ m_i表示簇的质心 SSE=i=1kpCipmi2K表示聚类中心的个数Ci表示簇p表示样本mi表示簇的质心

SSE的值越小,说明数据点越靠近它们的中心,聚类效果越好。

(2)、相关api
kmeans对象.inertia_	# 获得SSE的值

(二)、SC系数

(1)、定义

结合了聚类的凝聚度(cohesion)和分离度(separation)
S = b − a m a x ( a , b ) a :样本 i 到同一簇内其他点不相似程度的平均值 b :样本 i 到其他簇的平均不相似程度的最小值 S=\frac{b-a}{max(a,b)}\\ a:样本i到同一簇内其他点不相似程度的平均值\\ b:样本i到其他簇的平均不相似程度的最小值 S=max(a,b)baa:样本i到同一簇内其他点不相似程度的平均值b:样本i到其他簇的平均不相似程度的最小值

  • 计算每一个样本 i 到同簇内其他样本的平均距离 ai,该值越小,说明簇内的相似程度越大

  • 计算每一个样本 i 到最近簇 j 内的所有样本的平均距离 bij,该值越大,说明该样本越不属于其他簇 j

  • 计算所有样本的平均轮廓系数

  • 轮廓系数的范围为:[-1, 1],值越大聚类效果越好

(2)、相关api
silhouette_score(x, y_predict)	# 获取SC系数,传x和y预测值

(三)、CH系数

(1)、定义

CH 系数结合了聚类的凝聚度(Cohesion)和分离度(Separation)、质心的个数,希望用最少的簇进行聚类
C H ( k ) = S S B S S W m − k k − 1 S S W = ∑ i = 1 m ∣ ∣ x i − C p i ∣ ∣ 2 C p i 表示质心 x i 表示某个样本 m 表示样本数量 k 表示质心个数 S S B = ∑ i = 1 k n j ∣ ∣ C j − X ‾ ∣ 2 c j 表示质心 X ‾ 表示质心与质心之间的中心点 n j 表示样本的个数 CH(k)=\frac{SSB}{SSW}\frac{m-k}{k-1}\\ SSW=\sum_{i=1}^m||x_i-C_{pi}||^2\\ C_{pi}表示质心\\ x_i表示某个样本\\ m表示样本数量\\ k表示质心个数\\ SSB=\sum_{i=1}^kn_j||C_j-\overline{X}|^2\\ c_j表示质心\\ \overline{X}表示质心与质心之间的中心点\\ n_j表示样本的个数 CH(k)=SSWSSBk1mkSSW=i=1m∣∣xiCpi2Cpi表示质心xi表示某个样本m表示样本数量k表示质心个数SSB=i=1knj∣∣CjX2cj表示质心X表示质心与质心之间的中心点nj表示样本的个数
SSW值是计算每个样本点到质心的距离再累加起来,表示的是簇内的内聚程度,SSW越小越好

SSB表示簇与簇之间的分离度,SSB越大越好

(2)、相关api
calinski_harabasz_score(x, y_predict)	# 获取CH系数,传x和y预测值

(四)、肘部法

肘部法通过SSE确定n_culsters的值

  • 对于n个点的数据集,迭代计算k(from 1 to n),每次聚类完成后计算SSE

  • SSE是会逐渐变小的,以为每个点都是在它所在簇的中心本身

  • SSE变化过程中会出现一个拐点,下降率突然变缓时认为时最佳n_culsters

  • 在决定什么时候停止训练时,肘形判据同样有效,数据通常有更多的噪音,在增加分类无法带来更多回报时,我们停止增加类别


http://www.ppmy.cn/embedded/132290.html

相关文章

Element UI

Element ui 就是基于vue的一个ui框架,该框架基于vue开发了很多相关组件,方便我们快速开发页面。 官网: https://element.eleme.io/#/zh-CN 安装Element UI vue init webpack element(项目名)确认项目是否构建成功:进入到项目的根路径 执行 npm start 访问 h…

嵌入式硬件设计:技术与实践

嵌入式系统是现代技术世界中的重要组成部分,几乎遍布所有领域,从消费电子产品、医疗设备到工业自动化和智能交通系统。嵌入式硬件设计是这一领域的核心,它涉及到对处理器、存储器、接口、传感器等多种硬件元件的选择、集成与优化,使系统能够在特定环境下执行特定任务。本文…

QT中采用QCustomPlot 实现将buffer中的数据绘制成折线图,并且图形随着数据更新而更新

QT中采用QCustomPlot 实现将buffer中的数据绘制成折线图,并且图形随着数据更新而更新 为了在 Qt 中将缓冲区的数据动态绘制成折线图,并随着数据的更新而实时更新,可以使用 QCustomPlot 或 Qt 自带的绘图功能,比如 QGraphicsView,或者在更简单的情况下使用 QPainter 在 QW…

数据结构:堆的应用

堆排序 假定有一组数据极多的数,让我们进行排序,那我们很容易想到一种经典的排序方法,冒泡排序,我们对冒泡排序的时间复杂度进行分析: 显然,冒泡排序的时间复杂度是O(n^2),当数据量…

VLAN虚拟技术

复习: 路由器的工作原理: 根据路由表转发数据 路由表的形成: 自动获取 1.直连路由 2.动态路由 rip ospf 静态获取 手动配置 网关配置: ip地址:1-223 子网掩码;255.255.255.255 0 网关 冲突域: …

【功能安全】系统架构设计

目录 01 系统架构介绍 02 投票逻辑架构介绍 03 SIS架构 04 ADS域控制器架构设计 01 系统架构介绍 法规GBT 34590 Part4 part10定义的软件要求、设计和测试子阶段之间的关系(其中的3-7个人建议翻译为初始架构设计更合理 ) 系统架构的作用&#xf…

使用virtualenv导入ssl模块找不到指定的模块

最近在学习tensorflow&#xff0c;由于教程里面使用的是virtualenv&#xff0c;所以就按照教程开始安装了虚拟环境。但是在使用的时候&#xff0c;卡在了import ssl这一步&#xff0c;提示如下错误 >>> import ssl Traceback (most recent call last):File "<…

ESP8266(ESP-12F)MQTT固件烧录 -- AT透传固件

文章目录 MQTT透传AT固件下载WiFi固件烧录软件下载固件下载 ESP8266烧录MQTT的目的之一是使用MQTT协议和物联网平台进行数据交互&#xff0c;下面直接讲操作步骤 MQTT透传AT固件下载 这里直接使用安信可提供的固件&#xff0c;固件链接点击 安信可AT固件&#xff0c;选择1112固…