📄 fenlei.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 7],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,:);
% 绘制决策面
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
% 绘制决策面
%ezplot(DB);
%title('knn下的初始两类及样本分布');
%legend('类别1的中心点','一类分布样本','一类分布的范围','类别2的中心点','二类分布样本','二类分布的范围','决策面'
%axis tight;hold off;
TestData=mvnrnd([2 5],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('第一类','第二类','第三类',2);
axis tight;hold off;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -