当前位置: 首页 > ai >正文

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

一、聚类算法分析

1.概念

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

2.聚类算法分类

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

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

(2)根据实现方法分类

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

3.聚类算法API

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

  • 方法:estimator.fit(x);

    estimator.predict(x);

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

评估

from sklearn.metrics import calinski_harabasz_scoreprint(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=1kpCipmi2
    • 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)ba
    • 计算所有样本的平均轮廓系数
    • 轮廓系数的范围为 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)=SSWSSBk1mk

    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∣∣xiCpi2

    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∣∣CjX2

    • 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表示样本数量
http://www.xdnf.cn/news/13895.html

相关文章:

  • 中小企业服务器低成本的防勒索工具:RDM防勒索
  • Python实现下载监控工具:自动检测并移动下载文件
  • 金融领域LLM开源测试集
  • C. Cherry Bomb
  • SpringBoot 服务器监控 监控系统开销 获取服务器系统的信息用户信息 运行信息 保持稳定
  • Rethinking Coarse-to-Fine Approach in Single Image Deblurring论文阅读
  • 产品哲学:用户收益>操作成本,字节跳动成功的底层逻辑
  • 泰国数码电商系统定制|3C产品详情泰语化+售后管理,适配泰国数码零售
  • 【QT】QTableView自定义样式:仅显示行间隔、隐藏列间隔、表头样式、表格样式、单行选中等
  • python+django/flask成都奥科厨具厂产品在线销售系统
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • Android音视频多媒体开源框架基础大全
  • 基于OpenCV实现实时颜色检测
  • 嵌入式相关开源项目、库、资料------持续更新中
  • Linux 系统性能测试全指南:从磁盘 I/O 到网络带宽的实战方案
  • ArcGIS Pro 3.4 二次开发 - 工作流
  • 【60 Pandas+Pyecharts | 箱包订单数据分析可视化】
  • 数据结构——第二章 线性表之顺序表、单链表
  • NB-IoT-下行基本概率和时频资源分布
  • 城市排水管网液位流量监测系统解决方案
  • 1.14 express小项目 和 用到的 jwt详解
  • 【STM32的通用定时器CR1的CKD[1:0]: 时钟分频因子 (Clock division)】
  • 【PDF】常见纸张字体大小设置指南 / Common Paper Size Font Guidelines
  • 音视频之H.264的句法和语义
  • 基于 Java 的大数据分布式存储在视频会议系统海量数据存储与回放中的应用
  • Flutter Android打包和发布Build APK
  • PROFINET主站S7-1500通过协议网关集成欧姆龙NJ系列TCP/IP主站
  • HarmonyOS 5对React Native有哪些新特性?
  • 50种3D效果演示(OpenGL)
  • Elasticsearch索引wildcard查询