cluster.m

来自「进行基于最大最小方法和K均值结合的分类方法 并画出具体的分类情况」· M 代码 · 共 68 行

M
68
字号
function [ p_cluster] = cluster(p_sample, k, feature_num, sample_num)% Detailed explanation goes here, feature_num and sample_num are% dimensions of the sample,k represents the ideal classified numbers load('test.mat');%initialize the k centres;p_cluster = max_min(p_sample);p_cluster = p_cluster';%(p_cluster-500*51)%iterative processfor i=1:500    p_dist = dist(p_cluster, p_sample);    [Y, I] = min(p_dist);    clear Y;    %recomputering the centers    for j=1:k        sum = zeros(feature_num,1);        count = 0;        for m=1:sample_num            if(I(m) == j)                sum = sum + p_sample(:,m);                count=count+1;            end        end        if(count > 0)            sum = sum/count;            p_cluster(j,:) = sum';        end    endendfor m=1:sample_num    if(I(m)==1)    plot(p_sample(1,m),p_sample(2,m),'ro');    end    hold on;    if(I(m)==2)    plot(p_sample(1,m),p_sample(2,m),'yo');    end    hold on     if(I(m)==3)    plot(p_sample(1,m),p_sample(2,m),'go');    hold on     endendradius= zeros(1,k);for j=1:k      sub = find(I == j);      p_max= dist(p_cluster(j,:),p_sample(:,sub));      [Y,M]= max(p_max);      clear M;      radius(j)=Y;endp_cluster = p_cluster';plot(p_cluster(1,:),p_cluster(2,:),'b*');hold on;y=p_cluster(2,:);x=p_cluster(1,:);for i=1:k    plotcircle(x(i),y(i),radius(i)+0.5);endhold on;bisector(p_cluster(:,1),p_cluster(:,3));hold on;bisector(p_cluster(:,1),p_cluster(:,2));hold on;bisector(p_cluster(:,2),p_cluster(:,3));hold on;axis([0 35 0 25]);end

⌨️ 快捷键说明

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