K均值聚类关于初始聚类中心的探讨(matlab程序)

本文介绍了K均值聚类算法,并提供了MATLAB代码示例,包括基本的K均值聚类实现以及改进的初始聚类中心选择方法,通过代码展示了如何画出聚类中心点及其变化情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码。

matlab程序:

1.

%利用传统K均值随机选取点聚类
clear all;
close all;
clc;
%生成五组三维高斯分布数据
mu1=[0 0 0];  %均值
sig1=[0.5 0 0;0 0.6 0;0 0 0.8]; %协方差
d1=mvnrnd(mu1,sig1,100); 
mu2=[3 3 3];
sig2=[0.3 0 0;0 0.5 0;0 0 0.3];
d2=mvnrnd(mu2, sig2,100);
mu3=[6 6 6];
sig3=[0.2 0 0;0 0.3 0;0 0 0.5];
d3=mvnrnd(mu3, sig3,100);
mu4=[9 3 3];
sig4=[0.2 0 0;0 0.3 0;0 0 0.5];
d4=mvnrnd(mu4, sig4,100);
mu5=[0 6 9];
sig5=[0.2 0 0;0 0.3 0;0 0 0.5];
d5=mvnrnd(mu5, sig5,100);
%画出五组数据的图像
plot3(d1(:,1),d1(:,2),d1(:,3),'co');
hold on;
plot3(d2(:,1),d2(:,2),d2(:,3),'go');
plot3(d3(:,1),d3(:,2),d3(:,3),'bo');
plot3(d4(:,1),d4(:,2),d4(:,3),'mo');
plot3(d5(:,1),d5(:,2),d5(:,3),'yo');
grid on;
%五类数据合成一个数据
data=[d1;d2;d3;d4;d5];
%k-means聚类
[u re]=KMeans(data,5);  %最后产生带标号的数据,标号在所有数据的最后,意思就是数据再加一维度
[m n]=size(re);
%最后显示聚类后的数据
figure;
hold on;
for i=1:m 
    if re(i,4)==1   
         plot3(re(i,1),re(i,2),re(i,3),'co'); 
    elseif re(i,4)==2
         plot3(re(i,1),re(i,2),re(i,3),'go'); 
     elseif re(i,4)==3
         plot3(re(i,1),re(i,2),re(i,3),'bo');
     elseif re(i,4)==4
         plot3(re(i,1),re(i,2),re(i,3),'mo');
    else 
         plot3(re(i,1),re(i,2),re(i,3),'yo'); 
    end
end
%聚类中心点
plot3(u(:,1),u(:,2),u(:,3),'ro')
grid on;

2. 

%对初始聚类中心改进后的K均值聚类
clear all;
close all;
clc;
%生成五组三维的高斯分布数据
mu1=[0 0 0];  %均值
sig1=[0.5 0 0;0 0.6 0;0 0 0.8]; %协方差
d1=mvnrnd(mu1,sig1,100); 
mu2=[3 3 3];
sig2=[0.3 0 0;0 0.5 0;0 0 0.3];
d2=mvnrnd(mu2, sig2,100);
mu3=[6 6 6];
sig3=[0.2 0 0;0 0.3 0;0 0 0.5];
d3=mvnrnd(mu3, sig3,100);
mu4=[9 3 3];
sig4=[0.2 0 0;0 0.3 0;0 0 0.5];
d4=mvnrnd(mu4, sig4,100);
mu5=[0 6 9];
sig5=[0.2 0 0;0 0.3 0;0 0 0.5];
d5
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值