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

📄 correctedknn.m

📁 一个聚类程序
💻 M
字号:
Pr_omiga1=0.5;
Pr_omiga2=0.5;
  Num=80;
    s1=mvnrnd([4 4],eye(2),Num)';
    s2=mvnrnd([1 1],eye(2),Num)';
    s3=mvnrnd([0 4],eye(2),Num)';
    class1=repmat(1,[Num 1]);
    class2=repmat(2,[Num 1]);
    class3=repmat(3,[Num 1]);
    s11=s1(1,:);
    s12=s1(2,:);
    s21=s2(1,:);
    s22=s2(2,:);
    s31=s3(1,:);
    s32=s3(2,:);
    muGiven1=[4 4]';
    sigmaGiven1=eye(2);
    muGiven2=[1 1]';
    sigmaGiven2=eye(2);
    muGiven3=[0 4]';
    sigmaGiven3=eye(2);

    mu1=muGiven1;
    sigma1=sigmaGiven1;
    mu2=muGiven2;
    sigma2=sigmaGiven2;
    mu3=muGiven3;
    sigma3=sigmaGiven3;
    
    
% 绘制决策面
hold on;
    
    % 二维样本
    
    % 绘制第1类的类中心mu及协方差
    plot(s11,s12,'r O');hold on;
    ellipse(sqrt(sigma1(1,1)),sqrt(sigma1(2,2)),0,mu1(1),mu1(2),'k');
    %plot(s11,s12,'r O');hold on;
    % 绘制第2类的类中心mu及协方差
    plot(s21,s22,'b +');
    plot(s31,s32,'g *');
    ellipse(sqrt(sigma2(1,1)),sqrt(sigma2(2,2)),0,mu2(1),mu2(2),'b');hold on;
    ellipse(sqrt(sigma3(1,1)),sqrt(sigma3(2,2)),0,mu3(1),mu3(2),'r');hold on;
    % 绘制决策面
    %ezplot(DB);
    %title('knn下的初始两类及样本分布');
    %legend('类别1的中心点','一类分布样本','一类分布的范围','类别2的中心点','二类分布样本','二类分布的范围','决策面'
    
    
%axis tight;hold off;

 TestData=mvnrnd([2 3],eye(2),10);
 k=7;%k取奇数
 GlassClasses=[class1;class2;class3];
 GlassData=[s1';s2';s3'];
[rowTest,colTest]=size(TestData);
TestClasses=zeros(rowTest,1);
for ii=1:rowTest
    S=size(GlassData);
    N=S(1,1);
    D=zeros(N,1);
    for jj=1:N
        Distance=0;
        for kk=1:colTest(1,1)
            Distance=Distance+(GlassData(jj,kk)-TestData(ii,kk))^2;
        end
        D(jj,1)=sqrt(Distance);
    end
    TempM0=[rot90(D);rot90(GlassClasses)];
    TempM1=rot90(TempM0,3);
    TempM=sortrows(TempM1,2);
    Ncout=zeros(6,2);
    for nnn=1:6
        Ncout(nnn,2)=nnn;
    end
    for count=1:k
        switch TempM(count,1)
            case 1
                Ncout(1,1)=Ncout(1,1)+1;
            case 2
                Ncout(2,1)=Ncout(2,1)+1;
            case 3
                Ncout(3,1)=Ncout(3,1)+1;
            case 4
                Ncout(4,1)=Ncout(4,1)+1;
            case 5
                Ncout(5,1)=Ncout(5,1)+1;
            case 6
                Ncout(6,1)=Ncout(6,1)+1;
        end
    end
    Ncoutsort=sortrows(Ncout);
    TestClasses(ii,1)=Ncoutsort(6,2);
    fprintf('TestData(%d)别划分为第(%d)类\n',ii,Ncoutsort(6,2));
end
%plot(GlassData1(:,1),GlassData1(:,2),'b .');hold on;
%plot(GlassData2(:,1),GlassData2(:,2),'b *');hold on;
for i=1:rowTest
   s=int2str(i);
   text(TestData(:,1),TestData(:,2),s);
end 
%plot(X111,X121,'r-');plot(X112,X122,'r-');plot(X113,X123,'r-');plot(X114,X124,'r-');plot(X115,X125,'r-');
title('样本和测试的分布');legend('第一类','第一类范围','第二类','第二类范围','第三类','第三类范围',4);
axis tight;hold off;

⌨️ 快捷键说明

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