K-means算法及matlab实现

K-means算法是一种聚类算法,属于无监督学习。K-means算法主要做两件事情:1、簇分配;2、移动聚类中心。

算法主要流程: 
1. 随机地选择k个对象,每个对象初始地代表了一个簇的中心; 
2. 对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇; 
3. 重新计算每个簇的平均值,更新为新的簇中心; 
4. 不断重复2、3,直到准则函数收敛。

K-means算法伪代码

Repeat{

for i=1 to m

c(i)=index (form 1 to K) of cluster centroid closest to x(i)    %簇分配

for k=1 to K

center=mean of points assigned to cluster k  %移动聚类中心

}

matlab 代码实现

%%输入数据
function data=datafile()
%随机产生三组随机数
% 第一组数据
mu1=[0 0 ];  %均值
S1=[.1 0 ;0 .1];  %协方差
data1=mvnrnd(mu1,S1,100);   %产生高斯分布数据
%第二组数据
mu2=[1 1 ];
S2=[.1 0 ;0 .1];
data2=mvnrnd(mu2,S2,100);
% 第三组数据
mu3=[-1.25 1.25 ];
S3=[.1 0 ;0 .1];
data3=mvnrnd(mu3,S3,100);
data=[data1;data2;data3];
end

%%k-means函数

function [id,center]=k_means(data,K)
%K-means聚类
%id是表示数据点属于哪一类的标记,center是每个类的聚类中心
%data为输入数据,K为需要分的聚类
% data=datafile();
% K=3;
[m,n]=size(data); %求输入数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值