首页 > 编程语言 >基于kmeans算法的数据聚类matlab仿真

基于kmeans算法的数据聚类matlab仿真

时间:2023-02-18 23:00:35浏览次数:46  
标签:中心 means 簇类 kmeans 算法 类簇 matlab 聚类

1.算法描述

       聚类算法也许是机器学习中“新算法”出现最多、最快的领域,一个重要的原因是聚类不存在客观标准,给定数据集总能从某个角度找到以往算法未覆盖的某种标准从而设计出新算法。Kmeans算法十分简单易懂而且非常有效,但是合理的确定K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响。众多的论文基于此都提出了各自行之有效的解决方案,新的改进算法仍然不断被提出,此类文章大家可以在Web Of Science中搜索。

 

        尽管Kmeans算法在MATLAB、Python等语言的工具箱函数中都有自带的函数可供调用,但作为机器学习的研究者新来说要设计出新的算法,有时就得“定制”自己的Kmeans函数了。自己动手编写无疑也更加能理解算法的具体过程,接下来就让我们进入正题吧

 

    k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。

 

 

 

 

 其中,D表示数据对象的属性个数。

 

        k-means算法聚类过程中,每次迭代,对应的类簇中心需要重新计算(更新):对应类簇中所有数据对象的均值,即为更新后该类簇的类簇中心。定义第k个类簇的类簇中心为Centerk,则类簇中心更新方式如下:

 

 

 

 

 

 代J的差值小于某一阈值时,即ΔJ<δ时,则终止迭代,此时所得类簇即为最终聚类结果。

 

        k-means算法思想可描述为:首先初始化K个类簇中心;然后计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,更新类簇中心;然后继续计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,继续更新类簇中心;……一直迭代,直到达到最大迭代次数TT,或者两次迭代JJ的差值小于某一阈值时,迭代终止,得到最终聚类结果。

 

 

 

k-means算法步骤为:

 

1.随机选择 k 个样本作为初始簇类中心(k为超参,代表簇类的个数。可以凭先验知识、验证法确定取值);

 

2.针对数据集中每个样本 计算它到 k 个簇类中心的距离,并将其归属到距离最小的簇类中心所对应的类中;

 

3.针对每个簇类,重新计算它的簇类中心位置;

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

3.MATLAB核心程序

 

clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
 
[x1,x2,r1,r2,r3,r4]=data3();%读取数据
 
 
x=[x1;x2];
%随意设定俩初始聚类中心,采取K=2
u1=x1(1,:);
u2=x2(1,:);
for y=1:2000 %设置粗估循环多少次
    [U1,U2]   = count(u1,u2,x);%分类
    [u1,u2,k] = new(U1,U2,u1,u2);%更新聚类中心
    if k==1  %根据k值来判断循环是否结束
       break;
    end
end
%写出最终的聚类中心
u1
u2
A114

 

  

 

标签:中心,means,簇类,kmeans,算法,类簇,matlab,聚类
From: https://www.cnblogs.com/51matlab/p/17133899.html

相关文章

  • matlab练习程序(泽尼克多项式拟合)
    泽尼克多项式是一个正交多项式,分为奇偶两类。奇多项式:偶多项式:其中:这里fai为方位角,范围[0-2pi];p为径向距离,范围[0,1];n-m大于等于0;如果n-m=0,则R=0。根据不同的m和n......
  • Ubuntu环境下安装MATLAB
    在Linux下安装MATLAB,当以root权限安装时,可能会出现运行安装文件但无响应的情况,则按以下步骤安装即可解决此问题:键入命令xhost+SI:localuser:root进入安装文件夹......
  • 基于扩展卡尔曼滤波的自适应智能无人车辆行驶matlab仿真,输出三维动态行驶动画
    1.算法描述        EKF扩展卡尔曼滤波要解决的是卡尔曼滤波不适用于非线性模型的问题。其和卡尔曼滤波算法结构相同,只是将非线性模型线性化,然后再应用卡尔曼滤波......
  • 基于蚁群算法的二维路径规划matlab仿真
    1.算法描述蚁群算法是一种用来寻找优化路径的概率型算法。它由MarcoDorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。这种算法具有......
  • 基于平均不同分辨率的共振峰跟踪算法matlab仿真
    1.算法描述共振峰轨迹的自动跟踪算法,其特点是不借助于其它的信息来源,仅仅是基于语谱图信息,来确定语谱图上前四个共振峰频率的位置和它们关于时间轴的轨迹.算法由三个层......
  • 基于平均不同分辨率的共振峰跟踪算法matlab仿真
    1.算法描述       共振峰轨迹的自动跟踪算法,其特点是不借助于其它的信息来源,仅仅是基于语谱图信息,来确定语谱图上前四个共振峰频率的位置和它们关于时间轴的轨......
  • 【MATLAB】绘图
    1绘图命令Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:线型颜色标记符号- 实线b蓝色.  点s方块: 虚线g绿色o圆圈......
  • MATLAB 一些常用的处理数据函数
    记录一些简单的功能方便及时调出来看,并附上一些参考链接,这样就不用总是重复查了......多学一个就多补充一个。统计数组中指定元素数量参考链接:https://www.ilovematl......
  • Dijkstra的matlab实现
    任务描述:生成20x20个点,使用Dijkstra算法让找出点(1,1)到(20,20)的最短路径,期中有随机的120个点是不通的,这120个点不包括起点和终点随机五次的实验结果图,代码在后面1.F......
  • 基于免疫算法的认知无线电资源分配优化算法的matlab仿真
    1.算法描述       认知无线电(CR)的概念来自JosephMitolo博士1999年的开创性工作。它自适应地调整内部通信机制,通过学习,了解等实时变化特定的无线电操作参数(功率,载......