K-means算法(知识点梳理)

这篇具有很好参考价值的文章主要介绍了K-means算法(知识点梳理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.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.欧几里得距离(欧氏距离)

        k-means算法,k-means,kmeans

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

2.曼哈顿距离

      k-means算法,k-means,kmeans

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

3.切比雪夫距离

        k-means算法,k-means,kmeans

三.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个簇,针对每个点,计算其轮廓系数

                轮廓系数公式:

                        k-means算法,k-means,kmeans

                其中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 KMeans

data=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()

运行结果

k-means算法,k-means,kmeans

k-means算法,k-means,kmeans

                        

四.初始点的选择

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文章来源地址https://www.toymoban.com/news/detail-595211.html

到了这里,关于K-means算法(知识点梳理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】十大算法之一 “K-means”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月10日
    浏览(34)
  • 无涯教程-聚类算法 - K-Means

    K-均值聚类算法计算质心并进行迭代,直到找到最佳质心为止,它假定群集的数目是已知的,它也称为扁平聚类算法。通过算法从数据中识别出的簇数以K均值中的\\\" K\\\"表示。 在该算法中,将数据点分配给群集,以使数据点和质心之间的平方距离之和最小。应当理解,簇内的较

    2024年02月10日
    浏览(31)
  • 【g】聚类算法之K-means算法

    聚类算法是一种无监督学习方法,它将相似的数据样本划分为一组,同时将不相似的数据样本划分为另一组。这个过程由计算机自动完成,不需要任何人为的干预。 K-means算法是一种经典的聚类算法,它的主要思想是把数据集分成k个簇,每个簇包括距离其它各簇最近的若干个

    2024年02月08日
    浏览(30)
  • 机器学习之K-means聚类算法

    目录 K-means聚类算法 算法流程 优点 缺点 随机点聚类 人脸聚类 旋转物体聚类 K-means聚类算法是一种无监督的学习方法,通过对样本数据进行分组来发现数据内在的结构。K-means的基本思想是将n个实例分成k个簇,使得同一簇内数据相似度高而不同簇之间数据相似度低。 K-means的

    2024年02月11日
    浏览(33)
  • K-means++聚类算法(matlab实现)

    K-means++算法:K-means++算法是K-means算法的改进版,其在选择初始质心时采用了一种更加聪明的方法,能够有效地避免局部最优解。具体来说,K-means++算法的初始质心是根据距离数据点最远的原则来选择的,这样可以保证初始质心的分布更加广泛,从而使得算法更容易找到全局最

    2024年02月07日
    浏览(82)
  • K-means聚类算法原理及实现

    1.1概念 聚类分析,也称为分割分析或分类分析,可将样本数据分成一个个组(即簇)。同一簇中的对象是相似的,不同簇中的对象则明显不同。 Statistics and Machine Learning Toolbox™ 提供了几种聚类方法和相似性度量(也称为距离度量)来创建簇。此外,簇计算可以按照不同的计

    2024年03月18日
    浏览(33)
  • 机器学习之K-Means(k均值)算法

    K-Means算法又称K均值算法,属于聚类(clustering)算法的一种,是应用最广泛的聚类算法之一。所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,

    2024年02月03日
    浏览(33)
  • 机器学习——K-Means算法优化(一)代价函数

    在K-Means算法中,对K个质心的选择,容易陷入局部最小值,从而每次聚类得到不同的结果。 使用多次的随机初始化,并计算每一次建模得到的代价函数值,选取最小的代价函数值作为聚类结果,代价函数公式如下 J ( c ( 1 ) , … , c ( m ) , μ 1 , … , μ K ) = 1 m ∑ i = 1 m ∣ ∣ x (

    2024年02月02日
    浏览(48)
  • 传统机器学习(三)聚类算法K-means(一)

    K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means基于欧式距离认为两个目标距离越近,相似度越大。 1.1.1 算法流程 (1)图a表达了初始的数据集, 假设k=2; (2)在图b中,随机选择两个k类的对应的类别质心,即图中的红色质

    2023年04月15日
    浏览(30)
  • K-means聚类算法(附Python实现代码)

    本文的代码与数据地址已上传至github:https://github.com/helloWorldchn/MachineLearning 1、基于划分的聚类 划分算法的思想是,将给定待挖掘数据集中的数据对象划分成K组(k≤N,N代表数据集中对象数目),每一组表示一个聚类的簇。并且要满足任何一个数据对象仅可以属于一个聚类,

    2024年02月07日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包