久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3943|回復: 3
收起左側

模式識別算法matlab程序 壓縮 剪輯近鄰法 parzen窗 c均值算法 bayes判別

[復制鏈接]
ID:192495 發表于 2017-4-22 21:12 | 顯示全部樓層 |閱讀模式
關于模式識別中的一些算法的matlab程序
bayes判別\
c均值算法\
parzen窗\
剪輯近鄰法\
壓縮近鄰法\
0.png
源碼下載:
模式識別.rar (7.61 KB, 下載次數: 16)
回復

使用道具 舉報

ID:1 發表于 2017-4-22 22:26 | 顯示全部樓層
bayes判別:
  1. % 初始設置
  2. clc
  3. clear all
  4. close all
  5. n=2000;           %% 樣本個數為 2*n
  6. n1=0;n2=0;       %% 判別為類1的個數為n1,判別為類2的個數為n2
  7. m1=1;m2=1;
  8. error1to2=0;error2to1=0;     %% erroritoj為類i判為類j的錯誤個數
  9. % 類別1的二維聯合正態分布的期望和方差,并隨機產生 n 個樣本
  10. mu1=[3 4];
  11. sigma1=[1 1.5; 1.5 3];
  12. x1 = mvnrnd(mu1,sigma1,n);

  13. %%類別2的二維聯合正態分布的期望和方差,并隨機產生 n 個樣本
  14. mu2=[8,9];
  15. sigma2=[2 3;3 5];
  16. x2 = mvnrnd(mu2,sigma2,n);
  17. % 判別函數g(x)進行判別

  18. for i=1:1:n
  19.     if g(x1(i,:),mu1,sigma1)>=g(x1(i,:),mu2,sigma2)
  20.         X1(m1,:)=x1(i,:);
  21.         m1=m1+1;
  22.     else
  23.         X2(m2,:)=x1(i,:);
  24.         m2=m2+1;
  25.         erroe1to2=error1to2+1;
  26.     end
  27. end
  28. for i=1:1:n
  29.     if g(x2(i,:),mu1,sigma1)>=g(x2(i,:),mu2,sigma2)
  30.         X1(m1,:)=x2(i,:);
  31.         m1=m1+1;
  32.         error2to1=error2to1+1;
  33.     else
  34.         X2(m2,:)=x2(i,:);
  35.         m2=m2+1;
  36.     end
  37. end
  38. %%%%%%繪圖
  39. % 原始樣本點
  40. figure('NumberTitle', 'off', 'Name', '原樣本點');
  41. scatter(x1(:,1),x1(:,2),'r')
  42. hold on
  43. scatter(x2(:,1),x2(:,2),50,'kx')
  44. title('原始樣本')
  45. xlabel('樣本1')
  46. ylabel('樣本2')
  47. legend('第一類樣本','第二類樣本',0);
  48.   
  49. % 分類后樣本點
  50. figure('NumberTitle', 'off', 'Name', '分類樣本點');
  51. scatter(x1(:,1),x1(:,2),'r')
  52. hold on
  53. scatter(x2(:,1),x2(:,2),50,'kx')
  54. hold on
  55. scatter(X1(:,1),X1(:,2),'r')
  56. hold on
  57. scatter(X2(:,1),X2(:,2),50,'kx')
  58. title('分類后的樣本')
  59. xlabel('樣本1')
  60. ylabel('樣本2')
  61. legend('第一類樣本','第二類樣本',0);
復制代碼



回復

使用道具 舉報

ID:1 發表于 2017-4-22 22:27 | 顯示全部樓層
c均值算法:
  1. %% c-均值算法
  2. %% 初始化操作
  3. clc
  4. close all
  5. clear all
  6. n=100;
  7. N=5*n;
  8. %% 產生5類隨機樣本,假設類別數已知
  9. %% 樣本1
  10. mu1=[2 2];
  11. SIGMA1=[1 1.5; 1.5 3];
  12. tra_sam1 = mvnrnd(mu1,SIGMA1,n);
  13. %% 樣本2
  14. mu2=[20,20];
  15. SIGMA2=[4 3;3 5];
  16. tra_sam2 = mvnrnd(mu2,SIGMA2,n);
  17. %% 樣本3
  18. mu2=[11,11];
  19. SIGMA2=[1 1;1 2];
  20. tra_sam3 = mvnrnd(mu2,SIGMA2,n);
  21. %% 樣本4
  22. mu2=[20,2];
  23. SIGMA2=[2 1.2;1.2 4];
  24. tra_sam4 = mvnrnd(mu2,SIGMA2,n);
  25. %% 樣本5
  26. mu2=[2,20];
  27. SIGMA2=[3 2;2 3];
  28. tra_sam5 = mvnrnd(mu2,SIGMA2,n);
  29. tra_sam=[tra_sam1;tra_sam2;tra_sam3;tra_sam4;tra_sam5];
  30. %% 將樣本隨機分成5類,計算代表點
  31. n1=1;n2=1;n3=1;n4=1;n5=1;
  32. for i=1:N
  33.     t=rand;
  34.     if t<=0.2
  35.         cell_sam1(n1,:)=tra_sam(i,:);
  36.         n1=n1+1;
  37.     elseif t<=0.4
  38.         cell_sam2(n2,:)=tra_sam(i,:);
  39.         n2=n2+1;
  40.     elseif t<=0.6
  41.         cell_sam3(n3,:)=tra_sam(i,:);
  42.         n3=n3+1;
  43.     elseif t<0.8
  44.         cell_sam4(n4,:)=tra_sam(i,:);
  45.         n4=n4+1;
  46.     else
  47.         cell_sam5(n5,:)=tra_sam(i,:);
  48.         n5=n5+1;
  49.     end
  50. end
  51. %% 求每類的均值
  52. m1=mean(cell_sam1);
  53. m2=mean(cell_sam2);
  54. m3=mean(cell_sam3);
  55. m4=mean(cell_sam4);
  56. m5=mean(cell_sam5);
  57. m=[m1;m2;m3;m4;m5];

  58. cell_sam1=zeros(1,2);cell_sam2=zeros(1,2);
  59. cell_sam3=zeros(1,2);cell_sam4=zeros(1,2);
  60. cell_sam5=zeros(1,2);
  61. n1=1;n2=1;n3=1;n4=1;n5=1;
  62. %% 獲得初始分類
  63. for i=1:N
  64.     for j=1:5
  65.         distance1(j)=norm(tra_sam(i,:)-m(j,:));
  66.     end
  67.     [a,b]=min(distance1);
  68.     if b==1
  69.         cell_sam1(n1,:)=tra_sam(i,:);
  70.         n1=n1+1;
  71.     elseif b==2
  72.         cell_sam2(n2,:)=tra_sam(i,:);
  73.         n2=n2+1;
  74.     elseif b==3
  75.         cell_sam3(n3,:)=tra_sam(i,:);
  76.         n3=n3+1;
  77.     elseif b==4
  78.         cell_sam4(n4,:)=tra_sam(i,:);
  79.         n4=n4+1;
  80.     else
  81.         cell_sam5(n5,:)=tra_sam(i,:);
  82.         n5=n5+1;
  83.     end   
  84. end
  85. %% 移動初始分類的樣本使分類更加合理
  86. j_num=0;j_e1=0;
  87. while (j_num<5)
  88.     [cell_sam1,cell_sam2,cell_sam3,cell_sam4,cell_sam5]=y_move(cell_sam1,cell_sam2,cell_sam3,cell_sam4,cell_sam5);
  89.     [cell_sam2,cell_sam1,cell_sam3,cell_sam4,cell_sam5]=y_move(cell_sam2,cell_sam1,cell_sam3,cell_sam4,cell_sam5);
  90.     [cell_sam3,cell_sam1,cell_sam2,cell_sam4,cell_sam5]=y_move(cell_sam3,cell_sam1,cell_sam2,cell_sam4,cell_sam5);
  91.     [cell_sam4,cell_sam1,cell_sam2,cell_sam3,cell_sam5]=y_move(cell_sam4,cell_sam1,cell_sam2,cell_sam3,cell_sam5);
  92.     [cell_sam5,cell_sam1,cell_sam2,cell_sam3,cell_sam4]=y_move(cell_sam5,cell_sam1,cell_sam2,cell_sam3,cell_sam4);
  93.     %% 計算改變后的誤差平方
  94.     m1=mean(cell_sam1);
  95.     m2=mean(cell_sam2);
  96.     m3=mean(cell_sam3);
  97.     m4=mean(cell_sam4);
  98.     m5=mean(cell_sam5);
  99.     [r1,c1]=size(cell_sam1);
  100.     [r2,c2]=size(cell_sam2);
  101.     [r3,c3]=size(cell_sam3);
  102.     [r4,c4]=size(cell_sam4);
  103.     [r5,c5]=size(cell_sam5);
  104.     j_e=0;
  105.     for i=1:r1
  106.         j_e=j_e+norm(cell_sam1(i,:)-m1)^2;
  107.     end
  108.     for i=1:r2
  109.         j_e=j_e+norm(cell_sam2(i,:)-m2)^2;
  110.     end
  111.     for i=1:r3
  112.         j_e=j_e+norm(cell_sam3(i,:)-m3)^2;
  113.     end
  114.     for i=1:r4
  115.         j_e=j_e+norm(cell_sam4(i,:)-m4)^2;
  116.     end
  117.     for i=1:r5
  118.         j_e=j_e+norm(cell_sam5(i,:)-m5)^2;
  119.     end
  120.     if abs(j_e1-j_e)<=0.001
  121.         j_num=j_num+1;
  122.     else
  123.         j_num=0;
  124.     end
  125.     j_e1=j_e;
  126. end

  127. % 繪圖
  128. figure('NumberTitle', 'off', 'Name', '待分類樣本點');
  129. scatter(tra_sam1(:,1),tra_sam1(:,2),'r')
  130. hold on
  131. scatter(tra_sam2(:,1),tra_sam2(:,2),'k')
  132. hold on
  133. scatter(tra_sam3(:,1),tra_sam3(:,2),'b')
  134. hold on
  135. scatter(tra_sam4(:,1),tra_sam4(:,2),'y')
  136. hold on
  137. scatter(tra_sam5(:,1),tra_sam5(:,2),'g')
  138. title('待分類樣本點')
  139. xlabel('特征1')
  140. ylabel('特征2')
  141. legend('類1','類2','類3','類4','類5',2)

  142. figure('NumberTitle', 'off', 'Name', '分類后樣本點與正確分類樣本點對比');
  143. scatter(cell_sam1(:,1),cell_sam1(:,2),'rx')
  144. hold on
  145. scatter(cell_sam2(:,1),cell_sam2(:,2),'kx')
  146. hold on
  147. scatter(cell_sam3(:,1),cell_sam3(:,2),'bx')
  148. hold on
  149. scatter(cell_sam4(:,1),cell_sam4(:,2),'yx')
  150. hold on
  151. scatter(cell_sam5(:,1),cell_sam5(:,2),'gx')
  152. hold on
  153. scatter(tra_sam1(:,1),tra_sam1(:,2),'r')
  154. hold on
  155. scatter(tra_sam2(:,1),tra_sam2(:,2),'k')
  156. hold on
  157. scatter(tra_sam3(:,1),tra_sam3(:,2),'b')
  158. hold on
  159. scatter(tra_sam4(:,1),tra_sam4(:,2),'y')
  160. hold on
  161. scatter(tra_sam5(:,1),tra_sam5(:,2),'g')
  162. title('分類后樣本點與正確分類樣本點對比')
  163. xlabel('特征1')
  164. ylabel('特征2')
  165. legend('類1','類2','類3','類4','類5',2)




復制代碼



回復

使用道具 舉報

ID:1 發表于 2017-4-22 22:28 | 顯示全部樓層
壓縮近鄰法:
  1. %% 剪輯近鄰法
  2. %% 初始化操作
  3. clc
  4. close all
  5. clear all
  6. n=100;
  7. N=3*n;
  8. %% 訓練樣本1 二維聯合正態分布的期望和方差,并隨機產生 N 個樣本
  9. mu1=[2 3];
  10. SIGMA1=[20 1.5; 1.5 30];
  11. tra_sam1 = mvnrnd(mu1,SIGMA1,N);
  12. %% 訓練樣本2 二維聯合正態分布的期望和方差,并隨機產生 N 個樣本
  13. mu2=[10,11];
  14. SIGMA2=[20 1.5;1.5 30];
  15. tra_sam2 = mvnrnd(mu2,SIGMA2,N);
  16. %% 保留原始樣本
  17. tra_sam_org1=tra_sam1;
  18. tra_sam_org2=tra_sam2;
  19. %% 對樣本進行分類,分為3類
  20. num0=0; %% 用于存放上一次剪輯后樣本個數
  21. edit_time=0; %% 記錄剪輯次數
  22. m=0;    %% 記錄沒有可被剪輯樣本的連續次數
  23. N1=N;N2=N; %%分別記錄剪輯后樣本類1,類2的樣本個數
  24. while m<5
  25.     m11=1;m21=1;m31=1;
  26.     m12=1;m22=1;m32=1;
  27.     %% 將樣本分成三類
  28.     for i=1:N1
  29.         t=rand;
  30.         if t<=0.33
  31.             cell_sam11(m11,:)=tra_sam1(i,:);
  32.             m11=m11+1;
  33.         elseif t<=0.66
  34.             cell_sam21(m21,:)=tra_sam1(i,:);
  35.             m21=m21+1;
  36.         else
  37.             cell_sam31(m31,:)=tra_sam1(i,:);
  38.             m31=m31+1;
  39.         end
  40.     end
  41.     for i=1:N2
  42.         s=rand;
  43.         if s<=0.33
  44.             cell_sam12(m12,:)=tra_sam2(i,:);
  45.             m12=m12+1;
  46.         elseif s<=0.66
  47.             cell_sam22(m22,:)=tra_sam2(i,:);
  48.             m22=m22+1;
  49.         else
  50.             cell_sam32(m32,:)=tra_sam2(i,:);
  51.             m32=m32+1;
  52.         end
  53.     end

  54.     %% 對子集進行剪輯,去掉錯分的樣本
  55.     %% 利用子集2,對子集1中的cell_sam11進行裁剪
  56.     cell_sam11=cutting(cell_sam11,cell_sam21,cell_sam22);
  57.     %% 利用子集2,對子集1中的cell_sam12進行裁剪
  58.     cell_sam12=cutting(cell_sam12,cell_sam22,cell_sam21);

  59.     %% 利用子集3,對子集2中的cell_sam21進行裁剪
  60.     cell_sam21=cutting(cell_sam21,cell_sam31,cell_sam32);
  61.     %% 利用子集3,對子集2中的cell_sam22進行裁剪
  62.     cell_sam22=cutting(cell_sam22,cell_sam32,cell_sam31);

  63.     %% 利用子集1,對子集3中的cell_sam31進行裁剪
  64.     cell_sam31=cutting(cell_sam31,cell_sam11,cell_sam12);
  65.     %% 利用子集1,對子集3中的cell_sam32進行裁剪
  66.     cell_sam32=cutting(cell_sam32,cell_sam12,cell_sam11);
  67.    
  68.     %% 剪輯后對樣本進行整理,合并,組成新的訓練樣本
  69.     tra_sam1=[cell_sam11;cell_sam21;cell_sam31];
  70.     tra_sam2=[cell_sam12;cell_sam22;cell_sam32];
  71.     cell_sam11=zeros(1,2);cell_sam21=zeros(1,2);cell_sam31=zeros(1,2);
  72.     cell_sam12=zeros(1,2);cell_sam22=zeros(1,2);cell_sam32=zeros(1,2);
  73.     [a1,b1]=size(tra_sam1);  
  74.     [c1,d1]=size(tra_sam2);
  75.     num1=a1+c1;  %% 計算剩余總樣本個數
  76.     N1=a1;
  77.     N2=c1;
  78.     if (num1-num0==0)
  79.         m=m+1;
  80.     else
  81.         m=0;
  82.     end
  83.     num0=num1;
  84.     edit_time=edit_time+1;
  85.       
  86. end
  87. %% -------------------%%
  88. %% 對剪輯好的樣本進行壓縮
  89. grabbag1=tra_sam1;
  90. grabbag2=tra_sam2;
  91. grabbag=[grabbag1;grabbag2];
  92. %% 計算存儲器grabbag中類1和類2 的個數
  93. [gra_r1,column3]=size(grabbag1);
  94. [gra_r2,column4]=size(grabbag2);
  95. %% 隨機選取一個樣本放入store中,
  96. %% 可以等價為隨機選取類1和類2,兩個樣本放入store中
  97. store1=grabbag1(1,:);
  98. grabbag1=grabbag1(2:gra_r1,:);
  99. gra_r1=gra_r1-1;
  100. store2=grabbag2(1,:);
  101. grabbag2=grabbag2(2:gra_r2,:);
  102. gra_r2=gra_r2-1;
  103. gra_r=gra_r1+gra_r2;

  104. sto_num1=2;%% store 的下標
  105. sto_num2=2;
  106. gra_tem=0;
  107. m=0;
  108. while(m<2*gra_r)
  109.     t=rand;
  110.     if t<=0.5 %% 如果屬于類1
  111.         q=randperm(gra_r1);
  112.         for i=1:sto_num1-1
  113.             distance1(i)=norm(grabbag1(q(1),:)-store1(i,:));
  114.         end
  115.         for i=1:sto_num2-1
  116.             distance2(i)=norm(grabbag1(q(1),:)-store2(i,:));
  117.         end
  118.         dist_min1=min(distance1);
  119.         dist_min2=min(distance2);
  120.         if dist_min1>dist_min2 %% 如果判斷錯誤,放入store
  121.             store1(sto_num1,:)=grabbag1(q(1),:);
  122.             grabbag1=[grabbag1(1:q(1)-1,:);grabbag1(q(1)+1:gra_r1,:)];
  123.             gra_r1=gra_r1-1;
  124.             sto_num1=sto_num1+1;
  125.         end
  126.     else  %% 如果屬于類2
  127.         q=randperm(gra_r2);
  128.         for i=1:sto_num1-1
  129.             distance1(i)=norm(grabbag2(q(1),:)-store1(i,:));
  130.         end
  131.         for i=1:sto_num2-1
  132.             distance2(i)=norm(grabbag2(q(1),:)-store2(i,:));
  133.         end
  134.         dist_min1=min(distance1);
  135.         dist_min2=min(distance2);
  136.         if dist_min1<dist_min2 %% 如果判斷錯誤,放入store
  137.             store2(sto_num2,:)=grabbag2(q(1),:);
  138.             grabbag2=[grabbag2(1:q(1)-1,:);grabbag2(q(1)+1:gra_r2,:)];
  139.             gra_r2=gra_r2-1;
  140.             sto_num2=sto_num2+1;
  141.         end   
  142.     end
  143.     gra_r=gra_r1+gra_r2;
  144.     if gra_r==gra_tem
  145.         m=m+1;
  146.     else
  147.         m=0;
  148.     end
  149.     gra_tem=gra_r;
  150. end
  151. edit_time
  152. sto_num1=sto_num1-1
  153. sto_num2=sto_num2-1
  154. %% 繪圖
  155. %% 繪制原始樣本點
  156. figure('NumberTitle', 'off', 'Name', '原樣本點');
  157. scatter(tra_sam_org1(:,1),tra_sam_org1(:,2),'r')
  158. hold on
  159. scatter(tra_sam_org2(:,1),tra_sam_org2(:,2),50,'kx')
  160. axis([-20,30,-20,30])
  161. title('原始樣本')
  162. xlabel('特征1')
  163. ylabel('特征2')
  164. legend('類1','類2',2)
  165. %% 繪制剪輯后樣本點
  166. figure('NumberTitle', 'off', 'Name', '剪輯后樣本點');
  167. scatter(tra_sam1(:,1),tra_sam1(:,2),'r')
  168. hold on
  169. scatter(tra_sam2(:,1),tra_sam2(:,2),50,'kx')
  170. axis([-20,30,-20,30])
  171. title('算法終止時樣本點')
  172. xlabel('特征1')
  173. ylabel('特征2')
  174. legend('類1','類2',2)
  175. %% 繪制壓縮后樣本點
  176. figure('NumberTitle', 'off', 'Name', '壓縮后樣本點');
  177. scatter(store1(:,1),store1(:,2),'r')
  178. hold on
  179. scatter(store2(:,1),store2(:,2),50,'kx')
  180. axis([-20,30,-20,30])
  181. title('壓縮后樣本點')
  182. xlabel('特征1')
  183. ylabel('特征2')
  184. legend('類1','類2',2)

  185.    
  186.    
  187.    
復制代碼



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区三区久久 | 成人欧美一区二区三区视频xxx | 国产亚洲欧美日韩精品一区二区三区 | 欧美看片 | 久久精彩视频 | 日韩在线观看一区 | 亚洲一区 中文字幕 | 亚洲一区不卡 | 日韩影院一区 | 91视频电影 | 亚洲一区| 久久国产精品视频 | 久久99蜜桃综合影院免费观看 | 欧美一级淫片007 | 亚洲www.| 日韩视频在线一区二区 | 一级a爱片性色毛片免费 | 伊人网综合在线 | 精品综合视频 | 国产精品视频久久久 | 成人在线精品 | 国产精品一区久久久久 | 97视频久久 | 中文字幕视频在线 | 午夜精品一区二区三区在线观看 | 黄色在线| 久久国产精品99久久久久久丝袜 | 99亚洲精品 | 三级免费毛片 | 日韩成人一区二区 | 欧美男人天堂 | 91九色视频 | 国产精品a久久久久 | 亚洲精品久久嫩草网站秘色 | 国产中文字幕网 | 国产精品性做久久久久久 | 台湾a级理论片在线观看 | 日本亚洲欧美 | 欧美一级欧美三级在线观看 | 自拍亚洲 | 91精品久久久久久久久久入口 |