iris數(shù)據(jù)的kmeans和knn算法代碼_第1頁
iris數(shù)據(jù)的kmeans和knn算法代碼_第2頁
iris數(shù)據(jù)的kmeans和knn算法代碼_第3頁
iris數(shù)據(jù)的kmeans和knn算法代碼_第4頁
全文預覽已結(jié)束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

clearclcloaddata.txt;a=data(l:30,1:4);%取第一類的前三十組aa=data(31:50,1:4);%第一類的后二十組b=data(51:80,1:4);%第二類的前三十組bb=data(81:100,1:4);%第二類的后二十組c=data(101:130,1:4);;%取第三類的前三十組cc=data(131:150,1:4);%第三類的后二十組train=cat(1,a,b,c);%組成訓練樣本(90*4)test=cat(1,aa,bb,cc);%組成測試樣本(60*4)c=3;%c均值c=3z1=train(1,:);z2=train(45,:);z3=train(90,:); %初始聚類中心z1,z2,z3m=0;t=0;%迭代步數(shù)whilem==0samp1=[];samp2=[];samp3=[];%定義空樣本:第一類為sampl,第二類為samp2,第三類為samp3n1=1;n2=1;n3=1;t=t+1;fori=1:90if(pdis(t[train(i,:);z1])〈pdis(t[train(i,:);z2]))&&(pdis(t[train(i,:);z1])<pdist([train(i,:);z3]))%距離%若訓練樣本與聚類zl的距離小于與z2,z3的距離,則賦值于samplesamp1(n1,:)=train(i,:);nl=nl+l;elseif(pdist([train(i,:);z2])〈pdist([train(i,:);zl]))&&(pdist([train(i,:);z2])<pdist([train(i,:);z3]))%若訓練樣本與聚類z2的距離小于與z1,z3的距離,則賦值于samp2.samp2(n2,:)=train(i,:);n2=n2+l;else%其他則賦值于samp3samp3(n3,:)=train(i,:);n3=n3+l;endend%forcl=mean(sampl,l);c2=mean(samp2,l);c3=mean(samp3,l); %求出新的均值,產(chǎn)生新的聚類中心ifisequal(cl,zl)&&isequal(c2,z2)&&isequal(c3,z3) %判斷新舊聚類中心是否相等。若相等則結(jié)束m=lm=l;endz1=c1;%新舊聚類中心若不相等,新聚類中心賦值于舊聚類中心。繼續(xù)循環(huán)z2=c2;z3=c3;end%while%%聚類中心z1=[5.02673。451.47330。24667],z2=[5.97032.74594.44051。4676],z3=[6。93.04785。81742。0217]%%kmeans算法結(jié)束后分三類sampl(30*4),samp2(37*4),samp3(23*4)共90行,迭代次數(shù)t=5sum=0;[u,v]=size(test);%返回測試樣本行列,u=60,v=4test1=[];test2=[];test3=[];m1=1;m2=1;m3=1;forx=1:udl=pdist([test(x,:);zl]);%測試樣本與聚類中心zl的距離d2=pdist([test(x,:);z2]);%測試樣本與聚類中心z2的距離d3=pdist([test(x,:);z3]);%測試樣本與聚類中心z3的距離ifdl<d2&&dl〈d3%若dl最小則測試樣本賦值于testltest1(m1,:)=test(x,:);ml=ml+l;m=l;elseifd2<dl&&d2<d3%若d2最小則測試樣本賦值于test2test2(m2,:)=test(x,:);m2=m2+l;m=2;elsetest3(m3,:)=test(x,:);%若d3最小則測試樣本賦值于test3m3=m3+l;m=3;end%分類結(jié)果為testl(20*4),test2(25*4),test3(15*4)共60組ifx〈=20disp(sprintf('第%d組數(shù)據(jù)分類后為第%d類',x+30,m));elseifx>20&&x〈=40disp(sprintf('第%d組數(shù)據(jù)分類后為第%d類',x+60,m));elseifx〉40&&x〈=60disp(sprintf('第%d組數(shù)據(jù)分類后為第%d類',x+90,m));endif(x〈=20&&m==l)||(x〉20&&x<=40&&m==2)丨I(x>40&&x<=60&&m==3)sum=sum+l;%正確的個數(shù)endenddisp(sprintf('分類正確率為%4.2f',sum/60));%正確率clearclcloaddata.txt;a=data(1:30,1:4);%取第一類的前三十組aa=data(3l:50,l:4);%第一類的后二十組b=data(5l:80,l:4);%第二類的前三十組bb=data(8l:l00,l:4);%第二類的后二十組c=data(101:130,1:4);;%取第三類的前三十組cc=data(131:150,1:4); %第三類的后二十組train_sample=cat(1,a,b,c);%組成訓練樣本test_sample=cat(1,aa,bb,cc);%組成測試樣本k=5;%k近鄰k取5cha=zeros(1,90);sum=0;[i,j]=size(train_sample);%i=90,j=4[u,v]=size(test_sample);%u=60,v=4forx=1:ufory=1:iresult=sqrt((test_sample(x, 1)一train_sample(y, 1))。人2+(test_sample(x,2)-train_sample(y,2)).人2+。..(test_sample(x,3)一train_sample(y,3))。人2+(test_sample(x,4)—train_sample(y,4)).A2);cha(1,y)=result;%第一個測試樣本與所有訓練樣本間的距離向量end;[z,Ind]=sort(cha);%從小到大排列Ind用來存儲排序前在cha中的下標90m1=0;m2=0;m3=0;forn=1:kifInd(1,n)<=30m1=m1+1;%前五個中下標小于30的個數(shù)elseifInd(1,n)>30&&Ind(1,n)〈=60m2=m2+1; %前五個中下標小于60大于30的個數(shù)elsem3=m3+1;%前五個中下標小于90大于60的個數(shù)endendL=[m1m2m3];ifm1==max(L)m=1;%若m1最大則屬于第一類elseifm2==max(L)m=2;%若m2最大則屬于第二類elseifm3==max(L)m=3; %若m3最大則屬于第二類endifx〈=20disp(sprintf('第%小組數(shù)據(jù)分類后為第%d類',x+30,m));elseifx>20&&x〈=40disp(sprintf('第%d組數(shù)據(jù)分類后為第%小類',x+60,m));elseifx>4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論