目录

一.K-means算法的原理和工作流程

1.算法原理

2.工作流程

二.K-means中常用的距离度量方法

1.欧几里得距离(欧氏距离)

2.曼哈顿距离

3.切比雪夫距离

三.K-means算法中K值的选择

1.手肘法

2. 轮廓系数

手肘法和轮廓系数的实现

四.初始点的选择

1.随机选择

2.最远距离

3.层次聚类或canopy预处理

五.陷入质心的循环停不下来怎么办

1.原因

2.怎么办

六.K-means算法与KNN算法的共同点与区别

1.区别

2.共同点

七.K-means算法的优缺点

1.K-means算法的优点

2.K-means算法的缺点

八.根据K-means算法的缺点,有哪些改进的算法

1.K-means++

2.ISODATA

3.Kernel K-means

九.如何对K-means进行算法调优

十.K-means算法实现


一.K-means算法的原理和工作流程

1.算法原理

K-means算法是基于原型的,根据距离划分组的无监督聚类算法,对于给定的样本集,按照样本间的距离大小,将样本划分为K个簇,使得簇内的点尽量紧密相连,而簇间的点距离尽量大。

2.工作流程

step1:随机选取K个点作为聚类中心,即k个类中心向量

step2:分别计算其他样本点到各个类中心向量的距离,并将其划分到距离最近的类

step3:更新各个类的中心向量

step4:判断新的类中心向量是否发生改变,若发生改变则转到step2,若类中心向量不再发生变化,停止并输出聚类结果

二.K-means中常用的距离度量方法

1.欧几里得距离(欧氏距离)

衡量多维空间中的两点间距离,也是最常用的距离度量方法。

2.曼哈顿距离

曼哈顿距离也叫出租车距离,用来标明两个点在标准坐标系上的绝对轴距总和。

3.切比雪夫距离

三.K-means算法中K值的选择

思考:如果我们的数据是关于色彩RGB数据,我们可以直接设置K为3对图片的参数进行聚类分析,这是在我们已知数据基本信息的前提下采取的策略。但是,如果我们并不知道数据的基本信息,怎么分类,分成几类就是我们不得不思考的问题,这时,我们更希望能够从数据的角度出发,判断这一组数据希望自己分成几类,即K为几时分类效果最好。

1.手肘法

1.简单描述手肘法

手肘法是最常用的确定K-means算法K值的方法,所用到的衡量标准是SSE(sum of the squared errors,误差平方和)

主要思想:当k小于真实聚类数时,随着k的增大,会大幅提高类间聚合程度,SSE会大幅下降,当k达到真实聚类数时,随着k的增加,类间的聚合程度不会大幅提高,SSE的下降幅度也不会很大,所以k/SSE的折线图看起来像一个手肘,我们选取肘部的k值进行运算。

2. 轮廓系数

1.简单描述轮廓系数

使用轮廓系数时,先假设已经将样本集分成了k个簇,针对每个点,计算其轮廓系数

轮廓系数公式:

其中a(i)是样本点x(i)对同簇其他样本点的平均距离,称为凝聚度;b(i)是样本点x(i)到最近簇所有样本的平均距离,称为分离度。

最近簇定义如下:

就是用Xi到某个簇所有样本平均距离作为衡量该点到该簇的距离后,选择离Xi最近的一个簇作为最近簇。

求出所有点的轮廓系数再求平均值就得出了平均轮廓系数,平均轮廓系数的取值在[-1,1],显然,由轮廓系数公式可以观察出,凝聚度越小,分离度越大,分类效果越好,平均轮廓系数也越大,所以,取平均轮廓系数最大的点的k值时,分类效果越好

手肘法和轮廓系数的实现

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeansdata=pd.read_excel(r'C:\Users\21091\Downloads\wine.xlsx')scores=[]  #存放轮廓系数
distortions=[]#簇内误差平方和  SSE
for i in range(2,10):Kmeans_model=KMeans(n_clusters=i)predict_=Kmeans_model.fit_predict(data)scores.append( silhouette_score(data,predict_))distortions.append(Kmeans_model.inertia_)
print("轮廓系数:",scores)
print("簇内误差平方和:",distortions)#SSE  手肘法
plt.plot(range(2,10),distortions,marker='x')
plt.xlabel('Number of clusters')
plt.ylabel('Distortion')
plt.title('distortions')
plt.show()#轮廓系数法
plt.plot(range(2,10),scores,marker='x')
plt.xlabel('Number of clusters')
plt.ylabel('scores')
plt.title('scores')
plt.show()

运行结果

四.初始点的选择

1.随机选择

顾名思义,随机选取k个点作为初始点

2.最远距离

先选取1个点作为聚类中心,遍历其余所有样本点,选择距离最远的样本点作为第二个聚类中心,计算这两个点的中心向量,再次遍历样本点,找到最远的点作为第三个聚类中心,迭代直至找到k个点。

3.层次聚类或canopy预处理

先得到k个簇,再从每个簇中选择一个点,该点可以是中心点,也可以是离中心点最近的点。

五.陷入质心的循环停不下来怎么办

1.原因

可能样本数据本身不收敛

2.怎么办

1.进行迭代次数设置

2.设定收敛判断距离

六.K-means算法与KNN算法的共同点与区别

1.区别

1.K-means算法是聚类算法,无监督学习;KNN算法是分类算法,监督学习

2.K-means算法与KNN算法中的K值含义不同

K-means算法是将样本聚类成K个类;KNN算法是将输入数据的特征与样本集中数据的特征进行比较,取最相似的K个数据,若其中X类数据占大部分,则将这个输入数据划分为X类。

3.K-means算法有明显的前期训练过程,KNN算法没有。

2.共同点

都用到了NN(Nears Neighbor)算法 ,即根据一个点,在样本集中找到离它最近的点。

七.K-means算法的优缺点

1.K-means算法的优点

(1)原理简单,容易实现
       (2)可解释度较强

2.K-means算法的缺点

(1)K值很难确定
        (2)局部最优
        (3)对噪音和异常点敏感
        (4)需样本存在均值(限定数据种类)
        (5)聚类效果依赖于聚类中心的初始化
        (6)对于非凸数据集或类别规模差异太大的数据效果不好

八.根据K-means算法的缺点,有哪些改进的算法

1.K-means++

利用距离越远越好的策略选取初始点

2.ISODATA

当属于某个类的样本点过少时,把这个类去掉;当属于某个类的样本点过多且分散时,将这个类分为两个类

3.Kernel K-means

参照支持向量机中核函数的定义,将所有样本映射到另外一个特征空间中再进行聚类,有可能改善聚类效果。

九.如何对K-means进行算法调优

1.数据归一化和离散点处理

2.合理选择k值

3.使用核方法

十.K-means算法实现

烦请移步我的另一篇博客:

https://blog.csdn.net/weixin_46336091/article/details/123881505

K-means算法(知识点梳理)相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  3. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  4. K means 图片压缩

    k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...

  5. 数学速算法_新初一】七年级上册数学几何图形初步知识点梳理+例题详解!

    几何图形初步知识网络:知识点梳理背诵1. 我们把实物中抽象的各种图形统称为几何图形. 2.有些几何图形(如长方体.正方体.圆柱.圆锥.球等)的各部分不都在同一平面内,它们是立体图形. 3.有些几何图形 ...

  6. SQL重要知识点梳理!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:牧小熊,华中农业大学,Datawhale成员 有读者留言面试有点虚 ...

  7. 【数据分析】数据分析基础:SQL重要知识点梳理!

    作者:牧小熊,华中农业大学,Datawhale成员 有读者留言面试有点虚,数据库都忘的差不多了,与其临时抱佛脚,不如我们把MySQL的知识点梳理一遍,心中有知识点,面试不慌. 数据库的话我只对MySQ ...

  8. 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!

    呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!! ✴️大家好,我是王同学,爆肝三天三夜王同学把JavaScript 知识点梳理了一遍,文章没有一点套路,只有满满的干货 ✴️如果对你 ...

  9. OpenCV图像处理知识点梳理

    OpenCV知识点梳理 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和Mas OS操作系统上. 它轻量级而且高效 ...

  10. 2019年秋招 Java 面试知识点梳理(高频问题)

    Java 面试知识点梳理 基础一 JVM-内存区域分配 HotSpot 对象创建 JVM-类加载机制 JVM-内存分配(堆上的内存分配) JVM-GC回收机制 JVM-垃圾收集器 JVM指令重排序 重 ...

最新文章

  1. 解决NGUI中sprite的边缘会出现黑线的问题
  2. 用-force –opengl 指令_苹果新系统ios14新功能汇总 轻点背面等小技巧怎么用
  3. phpexcel用法(转)
  4. js中怎么为同级元素添加点击事件
  5. C语言visual studio警告:取消对NULL指针“p”的引用
  6. Excel 中使用数据透视表 Pivot Table
  7. javaweb基础(40)_jdbc框架
  8. oracle rac维护命令,2015年oracle rac日常基本维护命令.doc
  9. html5 手机拍视频滤镜,用canvas实现图片滤镜效果附演示_html5教程技巧
  10. 车载导航系统中常用物理量和单位
  11. python 插入排序,选择排序
  12. Bootstrap排版——HTML元素的样式重定义
  13. MFC程序设计 笔记1---综述
  14. Linux as AirPrint server
  15. 数字孪生,开启3D智慧园区管理新篇章
  16. VBA下载文件 使用WebBrowser 及 DoFileDownload
  17. 高淇java_关于高淇JAVA中SORM总结学习笔记详细个人解释
  18. [EE261学习笔记] 4.常用的几个傅里叶变换相关公式
  19. 宝塔面板申请带有www的二级域名SSL证书失败的处理方法
  20. Android/Linux Thermal Governor之IPA分析与使用

热门文章

  1. 记录xmapp升级过程中解决mysql扩展中出现的问题
  2. OpenCV_用形态学运算变换图像
  3. 国产数据库-达梦数据库
  4. 大数据:正在到来的数据革命
  5. 芯片数据分析笔记【01】 | 基因芯片的基本原理
  6. 【逆向】【PE入门】使用PEView分析PE文件
  7. xui和嘟嘟桌面哪个好_小米国际版桌面,这是我用过最流畅的手机桌面
  8. matlab里调节触发角度,电机与拖动基础及MATLAB仿真陈亚爱第4章直流电机.ppt
  9. cad中拖动文字时卡顿_CAD复制卡顿问题解决办法
  10. 人工智能 - 语音识别的技术原理是什么