机器学习之K-means聚类算法

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

目录

K-means聚类算法

算法流程

优点

缺点

随机点聚类

人脸聚类

旋转物体聚类


K-means聚类算法

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

机器学习之K-means聚类算法,机器学习,聚类,机器学习,算法

算法流程

K-means的算法过程如下:

机器学习之K-means聚类算法,机器学习,聚类,机器学习,算法

优点

K-means优点:

①是解决聚类问题的一种经典算法,简单、快速。

②对处理大数据集,该算法保持可伸缩性和高效率。

③当簇近似为高斯分布时,它的效果比较好。

缺点

K-means缺点:

①在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用。

②必须事先给出要生成的簇的数目k。

③对初值敏感,对于不同的初始值,可能会导致不同的结果。

④不适合发现非凸形状的簇或者大小差别很大的簇。

⑤对噪声和孤立点数据敏感。

随机点聚类

机器学习之K-means聚类算法,机器学习,聚类,机器学习,算法

代码中的变量musigma定义了两个高斯分布的均值和标准差,用来生成三个不同的类别的样本数据。然后将这些样本数据合并在一个矩阵sample中。

接下来,代码定义了K值为3,表示将样本数据聚成3个类别。classSampleNumber表示每个类别的样本数量为100。color矩阵用于存储样本点的颜色信息,classColor定义了三个类别的颜色。

class向量用于存储每个样本点的类别标签,初始值为0。classCenter矩阵定义了初始的类别中心点的坐标。

之后的代码通过迭代更新类别中心点的坐标,使得样本点与其所属类别中心点的距离最小。具体的更新过程为:对每个样本点,计算其与三个类别中心点的距离,将其归到距离最近的类别,并更新该类别的样本数和下一次迭代的类别中心点坐标。

每次迭代完成后,代码通过绘制散点图展示了聚类结果。其中,三个类别的中心点使用实心圆点表示,不同类别的样本点使用不同符号和颜色进行标记。

代码最终会生成四张图,分别展示初始状态和三次迭代后的聚类结果。

mu=[0 0];
sigma=[1 1];
class1=mvnrnd(mu,sigma,10);
mu=[5 5];
class2=mvnrnd(mu,sigma,10);
mu=[10 10];
class3=mvnrnd(mu,sigma,10);
sample=[class1;class2;class3];

k=3;
sampleNumberAll=size(sample,1);
classSampleNumber=100;
color=zeros(sampleNumberAll,3);
classColor=[[255 0 0];[0 255 0];[0 0 255]];
class=zeros(1,k);
classCenter=[2 8;3 9;4 10];
figure(1);
hold on;
scatter(classCenter(:,1),classCenter(:,2),[],classColor,'filled');
scatter(sample(:,1),sample(:,2),'m');
for iterator=1:3
    nextCenter=[0 0;0 0;0 0];
    classNumber=[0 0 0];
    for i=1:sampleNumberAll
        distances=zeros(1,k);
        for j=1:k
            distances(j)=pdist2(sample(i,:),classCenter(j,:));
        end
        [~,index]=sort(distances);
        class(i)=index(1);
        classNumber(class(i))=classNumber(class(i))+1;
        nextCenter(class(i),:)=nextCenter(class(i),:)+sample(i,:);
    end
    for i=1:k
        if classNumber(i)~=0
            classCenter(i,:)=nextCenter(i,:)/classNumber(i);
        end
    end
    figure(iterator+1);
    scatter(classCenter(:,1),classCenter(:,2),[],classColor,'filled');
    hold on;
    for i=1:sampleNumberAll
        if class(i)==1
            scatter(sample(i,1),sample(i,2),'r','s');
        elseif class(i)==2
            scatter(sample(i,1),sample(i,2),'g','d');
        else
            scatter(sample(i,1),sample(i,2),'b','h');
        end
    end
end

人脸聚类

机器学习之K-means聚类算法,机器学习,聚类,机器学习,算法

代码和随机生成点的差不多,不过有一个地方我研究了很久,那就是如何给每个点配上相应的照片,我之前都是一张张手贴上去的,这次努力研究了一把,终于实现自动配图。

figure(2);
scatter(classCenter(:,1),classCenter(:,2),[],classColor,'filled');
hold on;
for i=1:sampleNumberAll
    if class(i)==1
        scatter(sample(i,1),sample(i,2),'r','s','filled');
    elseif class(i)==2
        scatter(sample(i,1),sample(i,2),'g','d','filled');
    end
    hold on;
    picture=pictures(:,i);
    picture=reshape(picture,128,128);
    picture=imrotate(picture,180);
    colormap(gray(256));
    image('CData',picture,'XData',[sample(i,1)-150 sample(i,1)+150],'YData',[sample(i,2)-500+700 sample(i,2)+500+700]);
end

旋转物体聚类

实际上你也可以看出来,k-means适合聚一堆的凸形状的,像下面这种流形和条形的不凸的就没有办法聚的好。 

机器学习之K-means聚类算法,机器学习,聚类,机器学习,算法文章来源地址https://www.toymoban.com/news/detail-516470.html

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

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

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

相关文章

  • python机器学习——聚类评估方法 & K-Means聚类 & 神经网络模型基础

    1、随机设置K个特征空间内的点作为初始的聚类中心 2、对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别 3、接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值) 4、如果计算得出的新中心点与原中心点一样,那么

    2024年02月12日
    浏览(41)
  • 机器学习实战:Python基于K均值K-means进行聚类(九)

    1.1 K-means的介绍 K均值( K-means )是一种基于距离度量的聚类算法,其主要思想是将数据集划分为k个不同的簇,每个簇代表一个相似度较高的数据组。该算法通过迭代优化来最小化所有数据点与其所属簇的欧氏距离之和,从而找到最佳的簇划分。 需要区分一下,K-means和KNN是两

    2024年02月16日
    浏览(35)
  • 【机器学习实战】Python基于K均值K-means进行聚类(九)

    1.1 K-means的介绍 K均值( K-means )是一种基于距离度量的聚类算法,其主要思想是将数据集划分为k个不同的簇,每个簇代表一个相似度较高的数据组。该算法通过迭代优化来最小化所有数据点与其所属簇的欧氏距离之和,从而找到最佳的簇划分。 需要区分一下,K-means和KNN是两

    2024年02月06日
    浏览(40)
  • 【机器学习】十大算法之一 “K-means”

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

    2024年02月10日
    浏览(46)
  • k-means聚类算法详解

    什么是特征向量? 用来描述样本点的一组数据,要和我们数学中的向量区别一下,本质来说就是个数组,数组中的每个元素代表从不同角度描述样本点的值。 K-means 是我们最常用的基于 欧式距离 的聚类算法,其认为两个目标的距离越近,相似度越大。 聚类就是对大量末知标

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

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

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

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

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

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

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

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

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

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

    2024年03月18日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包