机器学习算法_聚类KMeans算法

一、聚类算法分析

1.概念

  • 概念:根据样本之间的相似性,将样本划分到不同的类别中;不同的相似度的计算方法,会得到不同的聚类结果,常见的相似度计算方法有欧氏距离法(无监督算法)
  • 聚类算法的目的是在没有先验知识的情况下,自动发现数据集中的内在结构和模式

2.聚类算法分类

(1)根据聚类颗粒度分类

  • 个数比较多的,细聚类;个数比较多的,粗聚类

(2)根据实现方法分类

  • K-means:按照质心分类
  • 层次聚类:对数据进行逐层划分,直到达到聚类的类别个数
  • DBSCAN聚类是一种基于密度的聚类算法
  • 谱聚类是一种基于图论的聚类算法

3.聚类算法API

python 复制代码
sklearn.cluster.KMeans(n_clusters=8)
  • 参数n_clusters:开始的聚类中心的数量,整型,默认值为8

  • 方法:estimator.fit(x);

    estimator.predict(x);

    estimator.fit_predict(x):计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x),然后再调用predict(x)

评估

python 复制代码
from sklearn.metrics import calinski_harabasz_score

print(calinski_harabasz_score(x, y_pre))最终结果是越小越好

4.KMeans算法实现流程

  1. 事先确定常数K,常数K意味着最终的聚类类别数
  2. 随机选择K个样本点作为初始聚类中心
  3. 计算每个样本到K个中心的距离,选择最近的聚类中心点作为标记类别
  4. 根据每个类别中的样本点,重新计算出新的聚类中心点(平均值),如果计算出的新中心点与原中心点一样则停止聚类,否则重新进行第二步过程,直至聚类中心不再变化

二、聚类评估指标

  • 不能分为训练集和测试集,则得到K值,就不能用网格交叉验证搜索

1.误差平方和SSE

  • 公式: S S E = ∑ i = 1 k ∑ p ∈ C i ∣ p − m i ∣ 2 SSE=\sum_{i=1}^k\sum_{p \in C_i}|p-m_i|^2 SSE=∑i=1k∑p∈Ci∣p−mi∣2
    • C i C_i Ci表示簇
    • k k k表示聚类中心的个数
    • p p p表示某个簇内的样本
    • m m m表示质心点
  • SSE越小(用同一个数据集去做),表示数据点越接近它们的中心,聚类效果越好

2.肘方法------K值确定

  • 肘方法通过SSE确定N__clusters的值
    • 对于n个点的数据集,迭代计算k from 1 to n, 每次聚类完成后计算SSE
    • SSE是会逐渐变小的,因为每个点都是他所在的簇中心本身
    • SSE变化过程中会出现一个拐点,下降率突然变缓即认为是最佳n_clusters的值
    • 再决定什么时候停止训练时,肘形判据同样有效,数据通常有更多的噪音,在增加分类无法带来更多回报时,我们停止增加类别

3.SC轮廓系数法

  • 轮廓系数法考虑簇内的内聚程度,簇外的分离程度(至少两簇以上才能使用这个方法)
    • 对计算每一个样本 i i i到同簇内其他样本的平均距离 a i a_i ai,该值越小,说明簇内的相似程度越大
    • 计算每一个样本 i i i到最近簇 j j j内的所有样本的平均距离 b i j b_{ij} bij,该值越大,说明该样本越不属于其他簇
    • 公式: S = b − a m a x ( a , b ) S= \frac{b-a}{max(a, b)} S=max(a,b)b−a
    • 计算所有样本的平均轮廓系数
    • 轮廓系数的范围为 S ∈ [ − 1 , 1 ] S \in [-1, 1] S∈[−1,1], S C SC SC值越大,聚类效果越好

4.CH轮廓系数法

  • CH系数考虑簇内的内聚程度,簇外的离散程度,质心的个数

  • 类别内部数据的距离平方和越小越好,类别之间的距离平方和越大越好,聚类的种类数越少越好

  • 公式: C H ( k ) = S S B S S W m − k k − 1 CH(k) = \frac{SSB}{SSW} \frac{m-k}{k-1} CH(k)=SSWSSBk−1m−k

    S S W = ∑ i = 1 m ∣ ∣ x i − C p i ∣ ∣ 2 SSW = \sum_{i = 1}^m||x_i-C_{pi}||^2 SSW=∑i=1m∣∣xi−Cpi∣∣2

    S S B = ∑ j = 1 k n j ∣ ∣ C j − X ‾ ∣ ∣ 2 SSB=\sum_{j = 1}{k}n_j||C_j-\overline X||^2 SSB=∑j=1knj∣∣Cj−X∣∣2

    • S S W SSW SSW:相当于 S S E SSE SSE,簇内距离
      • C p i C_{pi} Cpi表示质心
      • x i x_i xi表示某个样本
      • S S W SSW SSW值是计算每个样本到质心的距离,并累加起来
      • S S W SSW SSW表示簇内的内聚程度,越小越好
    • S S B SSB SSB:簇间距离
      • C j C_j Cj表示质心, X ‾ \overline X X表示质心与质心之间的中心点, n j n_j nj表示样本的个数
      • S S B SSB SSB表示簇与簇之间的分离程度, S S B SSB SSB越大越好
      • m m m表示样本数量
相关推荐
Black蜡笔小新6 小时前
自动化AI算法训练服务器DLTM助力医学影像分析进入AI智能分析新时代
人工智能·算法·自动化
手写码匠6 小时前
深入解析大模型架构之争:全能通用模型 vs 领域专精模型
人工智能·深度学习·算法·aigc
浅念-7 小时前
LeetCode 回溯算法题——综合练习
数据结构·c++·算法·leetcode·职场和发展·深度优先·dfs
列星随旋7 小时前
线段树和树状数组的学习
学习·算法
全糖可乐气泡水9 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
h_a_o777oah10 小时前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
05候补工程师10 小时前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
手写码匠11 小时前
Android 17 适配实战指南:新特性解读、隐私变更与迁移全攻略
人工智能·深度学习·算法·aigc
珊瑚里的鱼11 小时前
leetcode42雨水
算法·leetcode