日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【StatLearn】统计学习中knn算法实验(2)

發布時間:2025/7/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【StatLearn】统计学习中knn算法实验(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接著統計學習中knn算法實驗(1)的內容

Problem:

?

  • Explore the data before classification using summary statistics or?visualization
  • Pre-process the data (such as denoising, normalization, feature selection, …)?
  • Try other distance metrics or distance-based voting
  • Try other dimensionality reduction methods
  • How to set the k value, if not using cross validation? Verify your idea
  • 問題:
  • 在對數據分類之前使用對數據進行可視化處理
  • 預處理數據(去噪,歸一化,數據選擇)
  • 在knn算法中使用不同的距離計算方法
  • 使用其他的降維算法
  • 如何在不使用交叉驗證的情況下設置k值
  • 使用Parallel coordinates plot做數據可視化,首先對數據進行歸一化處理,數據的動態范圍控制在[0,1]。注意歸一化的處理針對的是每一個fearture。




    通過對圖的仔細觀察,我們挑選出重疊度比較低的feature來進行fearture selection,feature selection實際上是對數據挑選出更易區分的類型作為下一步分類算法的數據。我們挑選出feature序號為(1)、(2)、(5)、(6)、(7)、(10)的feature。個人認為,feature selection是一種簡單而粗暴的降維和去噪的操作,但是可能效果會很好。?

    根據上一步的操作,從Parallel coordinates上可以看出,序號為(1)、(2)、(5)、(6)、(7)、(10)這幾個feature比較適合作為classify的feature。我們選取以上幾個feature作knn,得到的結果如下:

    ?

    當K=1 的時候,Accuracy達到了85.38%,并且相比于簡單的使用knn或者PCA+knn的方式,Normalization、Featrure Selection的方法使得準確率大大提升。我們也可以使用不同的feature搭配,通過實驗得到更好的結果。


    MaxAccuracy= 0.8834 when k=17 (Normalization+FeartureSelection+KNN)

    ?

    試驗中,我們使用了兩種不同的Feature Selection 策略,選用較少fearture的策略對分類的準確率還是有影響的,對于那些從平行坐標看出的不那么好的fearture,對分類還是有一定的幫助的。 在較小的k值下,Feature Selection的結果要比直接采用全部Feature的結果要好。這也體現了在相對純凈的數據下,較小的k值能夠獲得較好的結果,這和直觀感覺出來的一致。 我們再嘗試對數據進行進一步的預處理操作,比如denoising。 數據去噪的方法利用對Trainning數據進行一個去處最大最小邊緣值的操作,我們認為,對于一個合適的feature,它的數據應該處于一個合理的范圍中,過大或者過小的數據都將是異常的。

    Denoising的代碼如下:

    ?

    function[DNData]=DataDenoising(InputData,KillRange) DNData=InputData; %MedianData=median(DNData); for i=2:size(InputData,2)[temp,DNIndex]=sort(DNData(:,i));DNData=DNData(DNIndex(1+KillRange:end-KillRange),:); end

    ?



    ?

    采用LLE作為降維的手段,通過和以上的幾種方案作對比,如下:


    ?

    ?

    MaxAccuracy= 0.9376 when K=23 (LLE dimensionality reduction to 2)

    關于LLE算法,參見這篇論文

    ?

    ?

    • Nonlinear dimensionality reduction by locally linear embedding.Sam Roweis & Lawrence Saul.Science, v.290 no.5500 , Dec.22, 2000. pp.2323--2326.
    以及項目主頁: http://www.cs.nyu.edu/~roweis/lle/

    ?


    源代碼:

    StatLearnProj.m

    ?

    clear; data=load('wine.data.txt'); %calc 5-folder knn Accuracy=[]; for i=1:5Test=data(i:5:end,:);TestData=Test(:,2:end);TestLabel=Test(:,1);Trainning=setdiff(data,Test,'rows');TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel)); end AccuracyKNN=mean(Accuracy,1);%calc PCA Accuracy=[]; %PCA [Coeff,Score,Latent]=princomp(data(:,2:end)); dataPCA=[data(:,1),Score(:,1:6)]; Latent for i=1:5Test=dataPCA(i:5:end,:);TestData=Test(:,2:end);TestLabel=Test(:,1);Trainning=setdiff(dataPCA,Test,'rows');TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel)); end AccuracyPCA=mean(Accuracy,1); BarData=[AccuracyKNN;AccuracyPCA]; bar(1:2:51,BarData');[D,I]=sort(AccuracyKNN,'descend'); D(1) I(1) [D,I]=sort(AccuracyPCA,'descend'); D(1) I(1)%pre-processing data %Normalization labs1={'1)Alcohol','(2)Malic acid','3)Ash','4)Alcalinity of ash'}; labs2={'5)Magnesium','6)Total phenols','7)Flavanoids','8)Nonflavanoid phenols'}; labs3={'9)Proanthocyanins','10)Color intensity','11)Hue','12)OD280/OD315','13)Proline'}; uniData=[]; for i=2:size(data,2)uniData=cat(2,uniData,(data(:,i)-min(data(:,i)))/(max(data(:,i))-min(data(:,i)))); end figure(); parallelcoords(uniData(:,1:4),'group',data(:,1),'labels',labs1); figure(); parallelcoords(uniData(:,5:8),'group',data(:,1),'labels',labs2); figure(); parallelcoords(uniData(:,9:13),'group',data(:,1),'labels',labs3);%denoising%Normalization && Feature Selection uniData=[data(:,1),uniData]; %Normalization all featurefor i=1:5Test=uniData(i:5:end,:);TestData=Test(:,2:end);TestLabel=Test(:,1);Trainning=setdiff(uniData,Test,'rows');TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel)); end AccuracyNorm=mean(Accuracy,1);%KNN PCA Normalization BarData=[AccuracyKNN;AccuracyPCA;AccuracyNorm]; bar(1:2:51,BarData');%Normalization& FS 1 2 5 6 7 10 we select 1 2 5 6 7 10 feature FSData=uniData(:,[1 2 3 6 7 8 11]); size(FSData) for i=1:5Test=FSData(i:5:end,:);Trainning=setdiff(FSData,Test,'rows');TestData=Test(:,2:end);TestLabel=Test(:,1);TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel)); end AccuracyNormFS1=mean(Accuracy,1);%Normalization& FS 1 6 7 FSData=uniData(:,[1 2 7 8]); for i=1:5Test=FSData(i:5:end,:);Trainning=setdiff(FSData,Test,'rows');TestData=Test(:,2:end);TestLabel=Test(:,1); TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel)); end AccuracyNormFS2=mean(Accuracy,1); figure(); BarData=[AccuracyNorm;AccuracyNormFS1;AccuracyNormFS2]; bar(1:2:51,BarData');[D,I]=sort(AccuracyNorm,'descend'); D(1) I(1) [D,I]=sort(AccuracyNormFS1,'descend'); D(1) I(1) [D,I]=sort(AccuracyNormFS2,'descend'); D(1) I(1) %denoiding %Normalization& FS 1 6 7 FSData=uniData(:,[1 2 7 8]); for i=1:5Test=FSData(i:5:end,:);Trainning=setdiff(FSData,Test,'rows');Trainning=DataDenoising(Trainning,2);TestData=Test(:,2:end);TestLabel=Test(:,1); TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel)); end AccuracyNormFSDN=mean(Accuracy,1); figure(); hold on plot(1:2:51,AccuracyNormFSDN); plot(1:2:51,AccuracyNormFS2,'r');%other distance metricsDist='cityblock'; for i=1:5Test=uniData(i:5:end,:);TestData=Test(:,2:end);TestLabel=Test(:,1);Trainning=setdiff(uniData,Test,'rows');TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracyPlus(TestData,TestLabel,TrainningData,TrainningLabel,Dist)); end AccuracyNormCity=mean(Accuracy,1);BarData=[AccuracyNorm;AccuracyNormCity]; figure(); bar(1:2:51,BarData');[D,I]=sort(AccuracyNormCity,'descend'); D(1) I(1)%denoising FSData=uniData(:,[1 2 7 8]); Dist='cityblock'; for i=1:5Test=FSData(i:5:end,:);TestData=Test(:,2:end);TestLabel=Test(:,1);Trainning=setdiff(FSData,Test,'rows');Trainning=DataDenoising(Trainning,3);TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracyPlus(TestData,TestLabel,TrainningData,TrainningLabel,Dist)); end AccuracyNormCityDN=mean(Accuracy,1); figure(); hold on plot(1:2:51,AccuracyNormCityDN); plot(1:2:51,AccuracyNormCity,'r');%call lledata=load('wine.data.txt'); uniData=[]; for i=2:size(data,2)uniData=cat(2,uniData,(data(:,i)-min(data(:,i)))/(max(data(:,i))-min(data(:,i)))); end uniData=[data(:,1),uniData]; LLEData=lle(uniData(:,2:end)',5,2); %size(LLEData) LLEData=LLEData'; LLEData=[data(:,1),LLEData];Accuracy=[]; for i=1:5Test=LLEData(i:5:end,:);TestData=Test(:,2:end);TestLabel=Test(:,1);Trainning=setdiff(LLEData,Test,'rows');Trainning=DataDenoising(Trainning,2);TrainningData=Trainning(:,2:end);TrainningLabel=Trainning(:,1);Accuracy=cat(1,Accuracy,CalcAccuracyPlus(TestData,TestLabel,TrainningData,TrainningLabel,'cityblock')); end AccuracyLLE=mean(Accuracy,1); [D,I]=sort(AccuracyLLE,'descend'); D(1) I(1)BarData=[AccuracyNorm;AccuracyNormFS2;AccuracyNormFSDN;AccuracyLLE]; figure(); bar(1:2:51,BarData');save('ProcessingData.mat');

    CalcAccuracy.m

    ?

    ?

    function Accuracy=CalcAccuracy(TestData,TestLabel,TrainningData,TrainningLabel) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %calculate the accuracy of classify %TestData:M*D matrix D stand for dimension,M is sample %TrainningData:T*D matrix %TestLabel:Label of TestData %TrainningLabel:Label of Trainning Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CompareResult=[]; for k=1:2:51ClassResult=knnclassify(TestData,TrainningData,TrainningLabel,k);CompareResult=cat(2,CompareResult,(ClassResult==TestLabel)); end SumCompareResult=sum(CompareResult,1); Accuracy=SumCompareResult/length(CompareResult(:,1));

    CalcAccuracyPlus.m

    function Accuracy=CalcAccuracyPlus(TestData,TestLabel,TrainningData,TrainningLabel,Dist) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %just as CalcAccuracy,but add distance metrics %calculate the accuracy of classify %TestData:M*D matrix D stand for dimension,M is sample %TrainningData:T*D matrix %TestLabel:Label of TestData %TrainningLabel:Label of Trainning Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CompareResult=[]; for k=1:2:51ClassResult=knnclassify(TestData,TrainningData,TrainningLabel,k,Dist);CompareResult=cat(2,CompareResult,(ClassResult==TestLabel)); end SumCompareResult=sum(CompareResult,1); Accuracy=SumCompareResult/length(CompareResult(:,1));


    ?



    轉載于:https://www.cnblogs.com/pangblog/p/3402651.html

    總結

    以上是生活随笔為你收集整理的【StatLearn】统计学习中knn算法实验(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕――色哟哟 | av成人在线观看 | 亚洲一区二区综合 | 日韩欧美字幕 | 熟妇高潮一区二区三区在线播放 | 72pao成人国产永久免费视频 | 日本三级视频在线播放 | 亚洲一区二区三区播放 | 中国 免费 av | 亚洲免费观看高清在线观看 | 午夜亚洲福利 | 综合伊人| 黄色小说图片视频 | 精品久久精品久久 | 欧美日韩在线视频免费 | 色噜噜狠狠狠综合曰曰曰88av | 美女日日日 | 中文字幕成人在线观看 | 欧美黄色性 | 看av在线 | jizz日本免费 | 成人免费视频网址 | 国产精品久久久久久久毛片 | 日日摸夜夜添狠狠添久久精品成人 | 欧洲视频一区二区 | 日韩三级黄色 | 亚洲成人自拍 | 久久国产麻豆 | 成人影片在线播放 | 亚洲网站在线播放 | 理论片一区 | 精品日本一区二区三区在线观看 | 寡妇高潮一级视频免费看 | 亚洲精品小视频在线观看 | aaa在线播放| 国产成人精品一区二区色戒 | 亚洲黄色片 | 解开乳罩喂领导吃奶 | 欧美一区成人 | 午夜毛片电影 | 亚洲中文字幕无码av永久 | 日韩一区二区毛片 | 三级成人网 | 丝袜一区二区三区 | 99热这里只有精品8 国产一卡二 | www日本高清视频 | 无码人妻久久一区二区三区不卡 | 日韩一区二区三免费高清在线观看 | 插吧插吧网 | 日韩一区av在线 | 亚洲综合精品 | 成人欧美一区二区三区黑人 | 毛片福利视频 | 无码人妻精品一区二区三 | 国产综合网站 | 日韩大片免费观看视频播放 | 亚洲精品中文字幕成人片 | 亚洲精品日本 | 青草在线视频 | 97色伦影院 | 午夜色网站 | 九色激情网 | 亚洲区 欧美区 | 久久综合激的五月天 | 欧美一区免费 | 超碰97在线人人 | 久操视频免费观看 | 伊人手机视频 | 天堂无乱码 | 日韩精品在线观看一区二区三区 | 国产成人一区二区三区电影 | 久久久精品中文字幕麻豆发布 | 黄色网址在线免费看 | 性做久久久久久久久 | 伊人论坛 | 日韩电影精品 | 亚洲色图欧美自拍 | 欧洲亚洲激情 | 中国女人内谢69xxxxⅹ视频 | av一区二区在线播放 | 2019自拍偷拍| 野花国产精品入口 | 久久久久久国产精品免费 | 国产精品久久久一区二区三区 | 99激情视频 | 日本午夜一区 | 99久久精品国产毛片 | 小萝莉末成年一区二区 | 亚洲熟妇无码一区二区三区 | av成人在线播放 | 免费国产小视频 | 欧美三级一区 | 第四色视频 | 成年人免费毛片 | 熟妇高潮一区二区高潮 | 一区二区三区欧美在线 | 四虎影院污 | 亚洲国产精品久久久久婷蜜芽 | 免费a级大片 |