欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1586|回復: 0
打印 上一主題 下一主題
收起左側

knn算法的MATLAB源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:348244 發表于 2018-6-9 15:57 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. %knn 歸一化自寫

  2. % 把數據分為測試集和訓練集
  3. % train=[wine(1:30,:);wine(60:89,:);wine(131:160,:)];
  4. % test=[wine(31:59,:);wine(90:130,:);wine(161:178,:)];
  5. % train_labels=[wine_labels(1:30,:);wine_labels(60:89,:);wine_labels(131:160,:)];
  6. % test_labels=[wine_labels(31:59,:);wine_labels(90:130,:);wine_labels(161:178,:)];
  7. %把標簽加到數據的最后一列
  8. wine(:,14)=wine_labels;
  9. %按行隨機打亂數據
  10. wine_data =wine(randperm(size(wine,1)),:);
  11. %取前一百條數據給訓練集
  12. train=wine_data(1:100,1:13);
  13. train_labels=wine_data(1:100,14);
  14. %剩下的78條給測試集
  15. test=wine_data(101:178,1:13);
  16. test_labels=wine_data(101:178,14);
  17. %數據歸一化
  18. h=max(train,[],1);
  19. l=min(train,[],1);
  20. for i=1:13
  21.     train(:,i)=(train(:,i)-l(i))./(h(i)-l(i));
  22.     test(:,i)=(test(:,i)-l(i))./(h(i)-l(i));
  23. end
  24. %[train,strc]=mapminmax(train');  
  25. %strc歸一化返回的參數 max min
  26. %test=mapminmax.apply(test',strc);
  27. %計算測試集與所有訓練集間的距離
  28. all_distance=dist(test,train');
  29. %升序排序 B為返回的索引
  30. [A,B]=sort(all_distance,2);
  31. %Knn  K近鄰
  32. K=3;
  33. all_labels=train_labels(B(:,1:K));
  34. %統計矩陣中出現的類別
  35. b=unique(all_labels);
  36. %統計各個類別出現的次數
  37. c=histc(all_labels',b);
  38. %新標簽賦值
  39. [m,predict_labels]=max(c);
  40. %求準確率
  41. accuracy=1-(length(find((predict_labels-test_labels')~=0))/length(test_labels))
  42. %畫圖
  43. figure;
  44. hold on;
  45. plot(test_labels,'o');
  46. plot(predict_labels,'*');
  47. xlabel('測試集數據','FontSize',12);
  48. ylabel('類別標簽','FontSize',12);
  49. legend('實際測試集分類','預測測試集分類');
  50. title('測試集的實際分類和預測分類圖','FontSize',12);
  51. grid on;





  52. %knn 歸一化使用mapminmax函數進行的
  53. %knn

  54. % 把數據分為測試集和訓練集
  55. % train=[wine(1:30,:);wine(60:89,:);wine(131:160,:)];
  56. % test=[wine(31:59,:);wine(90:130,:);wine(161:178,:)];
  57. % train_labels=[wine_labels(1:30,:);wine_labels(60:89,:);wine_labels(131:160,:)];
  58. % test_labels=[wine_labels(31:59,:);wine_labels(90:130,:);wine_labels(161:178,:)];
  59. %把標簽加到數據的最后一列
  60. wine(:,14)=wine_labels;
  61. %按行隨機打亂數據
  62. wine_data =wine(randperm(size(wine,1)),:);
  63. %取前一百條數據給訓練集
  64. train=wine_data(1:100,1:13);
  65. train_labels=wine_data(1:100,14);
  66. %剩下的78條給測試集
  67. test=wine_data(101:178,1:13);
  68. test_labels=wine_data(101:178,14);
  69. %數據歸一化
  70. [train,strc]=mapminmax(train');  
  71. %strc歸一化返回的參數 max min
  72. test=mapminmax.apply(test',strc);
  73. %計算測試集與所有訓練集間的距離
  74. all_distance=dist(test',train);
  75. %升序排序 B為返回的索引
  76. [A,B]=sort(all_distance,2);
  77. %Knn  K近鄰
  78. K=5;
  79. all_labels=train_labels(B(:,1:K));
  80. %統計矩陣中出現的類別
  81. b=unique(all_labels);
  82. %統計各個類別出現的次數
  83. c=histc(all_labels',b);
  84. %新標簽賦值
  85. [~,predict_labels]=max(c);
  86. %求準確率
  87. accuracy=1-(length(find((predict_labels-test_labels')~=0))/length(test_labels))
  88. %畫圖
  89. figure;
  90. hold on;
  91. plot(test_labels,'o');
  92. plot(predict_labels,'*');
  93. xlabel('測試集數據','FontSize',12);
  94. ylabel('類別標簽','FontSize',12);
  95. legend('實際測試集分類','預測測試集分類');
  96. title('測試集的實際分類和預測分類圖','FontSize',12);
  97. grid on;
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表