• 大小: 3KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: matlab  

资源简介

kmeans 算法,利用鸢尾花数据进行K均值分类,采用matlab编程

资源截图

代码片段和文件信息

clear all; 
close all; 
clc; 

[a1a2a3a4class] = textread(‘data1.txt‘  ‘%f%f%f%f%s‘‘delimiter‘ ‘‘);
a=[a1a2a3a4];
[b1b2b3b4class]=textread(‘data2.txt‘  ‘%f%f%f%f%s‘‘delimiter‘ ‘‘);
b=[b1b2b3b4];
[c1c2c3c4class]=textread(‘data3.txt‘  ‘%f%f%f%f%s‘‘delimiter‘ ‘‘);
c=[c1c2c3c4];
dat = [a;c;b];

hold on; 
[m n]=size(dat); 
for i=1:50 
    plot3(dat(i1)dat(i3)dat(i4)‘ro‘);
    hold on
end 
for i=51:100 
    plot3(dat(i1)dat(i3)dat(i4)‘g*‘);
    hold on
end 
for i=101:150
    plot3(dat(i1)dat(i3)dat(i4)‘b.‘);
    hold on
end 
[cluster] = minmaxprobe(dat);

figure; 
hold on; 
for i=1:size(cluster1) 
if cluster(i1) == 1 
        plot3(dat(i1)dat(i3)dat(i4)‘ro‘);
        hold on
    elseif cluster(i1) == 2
        plot3(dat(i1)dat(i3)dat(i4)‘g*‘);
        hold on
    else 
        plot3(dat(i1)dat(i3)dat(i4)‘b.‘);
        hold on
    end 
end
function [cluster] = minmaxprobe(x)
    num = size(x1);
    max_dis = 0;
    mean_lable1 = 0;
    mean_lable2 = 0;
    initial = 51;
    
    
    for i=1:num
        dis1 = sqrt((x(i1)-x(initial1))^2+(x(initial2)-x(12))^2+(x(i3)-x(initial3))^2+(x(i4)-x(initial4))^2);
        if (dis1>max_dis)
            mean_lable1 = i;
            max_dis = dis1;
        end
    end 
    for i=1:num
        if(i~=mean_lable1)
            dis1 = sqrt((x(i1)-x(initial1))^2+(x(initial2)-x(12))^2+(x(i3)-x(initial3))^2+(x(i4)-x(initial4))^2);
            dis2 = sqrt((x(i1)-x(mean_lable11))^2+(x(i2)-x(mean_lable12))^2+(x(i3)-x(mean_lable13))^2+(x(i4)-x(mean_lable14))^2);
            if(dis1>=dis2)
                dis(i1) = dis2;
                dis(i2) = i;
            else
                dis(i1) = dis1;
                dis(i2) = i;
            end
        end
    end
    [ab] = find(dis==max(max(dis(:1))));
    mean_lable2 = dis(a2);

   mean_lable(11) = initial;
   mean_lable(21) = mean_lable1;
   mean_lable(31) = mean_lable2;
   mean_lable
   cluster(mean_lable(11)1) = 1;
   cluster(mean_lable(21)1) = 2;
   cluster(mean_lable(31)1) = 3;
   
   for i = 1:num
       if((i~=mean_lable(21))&&(i~=mean_lable(31)))
           dis1 = sqrt((x(i1)-x(mean_lable(11)1))^2+(x(i2)-x(mean_lable(11)2))^2+(x(i3)-x(mean_lable(11)3))^2+(x(i4)-x(mean_lable(11)4))^2);
           dis2 = sqrt((x(i1)-x(mean_lable(21)1))^2+(x(i2)-x(mean_lable(21)2))^2+(x(i3)-x(mean_lable(21)3))^2+(x(i4)-x(mean_lable(11)4))^2);
           dis3 = sqrt((x(i1)-x(mean_lable(31)1))^2+(x(i2)-x(mean_lable(31)2))^2+(x(i3)-x(mean_lable(31)3))^2+(x(i4)-x(mean_lable(11)4))^2);
           
           [ab] = find([dis1;dis2;dis3]==min(min([dis1;dis2;dis3])));
           cluster(i1) = a; 
       end
   end
   
%    cluster
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2878  2018-05-07 17:50  K均值聚类\test1.m

     目录          0  2018-09-11 18:55  K均值聚类

     文件       1450  2018-05-07 17:45  K均值聚类\data1.txt

     文件       1650  2018-05-07 17:46  K均值聚类\data2.txt

     文件       1600  2018-05-07 17:47  K均值聚类\data3.txt

     文件       2538  2018-05-07 18:15  K均值聚类\iris_dataset.txt

----------- ---------  ---------- -----  ----

                10116                    6


评论

共有 条评论