机器学习算法_聚类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表示样本数量
相关推荐
破烂儿1 分钟前
基于机器学习的缓存准入策略研究
人工智能·机器学习·缓存
小刘的AI小站5 分钟前
leetcode hot100 二叉搜索树
算法·leetcode
自信的小螺丝钉5 分钟前
Leetcode 876. 链表的中间结点 快慢指针
算法·leetcode·链表·指针
红豆怪怪7 分钟前
[LeetCode 热题 100] 32. 最长有效括号
数据结构·python·算法·leetcode·动态规划·代理模式
算法打盹中8 分钟前
SimLingo:纯视觉框架下的自动驾驶视觉 - 语言 - 动作融合模型
人工智能·机器学习·计算机视觉·语言模型·自动驾驶
愚润求学12 分钟前
【贪心算法】day6
c++·算法·leetcode·贪心算法
AI 嗯啦24 分钟前
计算机的排序方法
数据结构·算法·排序算法
l12345sy37 分钟前
Day23_【机器学习—聚类算法—K-Means聚类 及评估指标SSE、SC、CH】
算法·机器学习·kmeans·聚类·sse·sc·ch
_Coin_-1 小时前
算法训练营DAY58 第十一章:图论part08
数据结构·算法·图论
scx201310041 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解
c++·算法·蓝桥杯·洛谷