⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 k_means.m

📁 k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个
💻 M
字号:
clear all;
load iris_tr;
load iris_te;
H=1;
% m为要生成的族的数目
m=3;
% num(n)为第n类的记录条数
for n=1:m
    num(n)=0;
end
[rows,cols]=size(IRIS_training_data);
for I=1:rows
    if IRIS_training_data(I,6)==1
        IRIS_training_data(I,5)=2;
    end
    if IRIS_training_data(I,7)==1
        IRIS_training_data(I,5)=3;
    end
end
new_iris=IRIS_training_data(:,1:5);
% 对test进行观察式学习分类
test=IRIS_training_data(:,1:4);
%随机选择三条连续记录作为初始的三个类
for I=1:m
c(I)=floor(rand(1)*75)+1;
end
for J=1:m
   for I=1:4
     class{J}(I)=test(c(J),I);
   end
end
while H==1
for I=1:rows
        for K=1:m
          d(K)=sqrt((class{K}(1)-test(I,1))^2+(class{K}(2)-test(I,2))^2+(class{K}(3)-test(I,3))^2+(class{K}(4)-test(I,4))^2);
        end
          [y,t]=min(d);
          num(t)=num(t)+1;
          test(I,5)=t;
    for J=1:4
        last_class{t}=class{t};
        class{t}(J)=(test(I,J)+class{t}(J)*num(t))/(num(t)+1);
    end
end
% 判断结束条件是否满足
for  K=1:m
    d(K)=sqrt((last_class{K}(1)-class{K}(1))^2+(last_class{K}(2)-class{K}(2))^2+(last_class{K}(3)-class{K}(3))^2+(last_class{K}(4)-class{K}(4))^2);
end
[y,t]=max(d);
if y<0.0001;
    break;
end
end
% 与实际的分类对比计算出预测的正确率
for I=1:m
    class11(I)=0;
    class21(I)=0;
    class31(I)=0;
end
for I=1:3:rows
    if test(I,5)==1
        class11(1)=class11(1)+1;
    elseif test(I,5)==2
        class11(2)=class11(2)+1;
    else class11(3)=class11(3)+1;
    end
       [right_num,t]=max(class11);
   end
   for I=2:3:rows
    if test(I,5)==1
        class21(1)=class21(1)+1;
    elseif test(I,5)==2
        class21(2)=class21(2)+1;
    else class21(3)=class21(3)+1;
    end
end
right_num=right_num+max(class21);
 for I=3:3:rows
    if test(I,5)==1
        class31(1)=class31(1)+1;
    elseif test(I,5)==2
        class31(2)=class31(2)+1;
    else class31(3)=class31(3)+1;
    end
end 
right_num=right_num+max(class31);
right_num=(right_num/rows)*100;
disp(sprintf('利用k_means给iris数据集分类的正确率为:%d%%',right_num));


    
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -