基于C均值算法简单分类(matlab实现)

% 样本集
x=[0,1;0,2;4,4;-1,-1;4,5;5,6;5,5;1,1];
% x,y轴范围
xmin=-2;
xmax=8;
ymin=-2;
ymax=8;
[N,M]=size(x);
% 选取存储中心点的位置,分别为前两类的中心,后一次两类中心,初始化前一次中心点
% A1,B1
A1=x(1,:);
B1=x(2,:);
A2=[];
B2=[];
% 定义两个暂存聚类过程中的类别
while(1)
temp1=[];
temp2=[];
for i=1:N
    D1=pdist2(x(i,:),A1,'euc');
    D2=pdist2(x(i,:),B1,'euc');
    if D1>D2
        temp2=[temp2;x(i,:)];
    else
         temp1=[temp1;x(i,:)];
    end
end
% 更新下一次中心位置
[n,m]=size(temp1);
A2=sum(temp1)/n;
B2=sum(temp2)/(8-n);
% 算法停止准则
if isequal(A1,A2)&&isequal(B1,B2)
    break;
else
%中心点更新
    A1=A2;
    B1=B2;
end
end
disp('类别1的中心位置:');
disp(A2);
disp('类别2的中心位置:');
disp(B2);
% 显示最终分类结果
plot(temp1(:,1),temp1(:,2),'ro','MarkerFaceColor','r');
hold on
plot(temp2(:,1),temp2(:,2),'go','MarkerFaceColor','g');
hold on
plot(A2(:,1),A2(:,1),'ko','MarkerFaceColor','k');
hold on
plot(B2(:,1),B2(:,1),'ko','MarkerFaceColor','k');
legend('W1','W2','类中心位置',-1);
axis([xmin xmax ymin ymax]);
title('C-均值法实现');
xlabel('x1');
ylabel('x2');
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值