資源簡介
代碼使用matlab編寫,壓縮包中包含MNIST數(shù)據(jù)集及其讀取函數(shù)、KNN算法實(shí)現(xiàn)和ReadMe.txt。
KNN算法中使用了PCA降維處理數(shù)據(jù)減少運(yùn)行時(shí)間,正確率可達(dá)95%,有部分注釋。請(qǐng)結(jié)合ReadMe文件使用。

代碼片段和文件信息
clear;
clc;
%讀取數(shù)據(jù)
trainImages?=?loadMNISTImages(‘train-images.idx3-ubyte‘);??????
trainLabels?=?loadMNISTLabels(‘train-labels.idx1-ubyte‘);
testImages?=?loadMNISTImages(‘t10k-images.idx3-ubyte‘);
testLabels?=?loadMNISTLabels(‘t10k-labels.idx1-ubyte‘);
%選取部分樣本進(jìn)行測(cè)試
testImages?=?testImages(:1:100);
testLabels?=?testLabels(1:1001);
%PCA降維
square?=?double(trainImages?*?trainImages‘);
[eigVect?eigVal]?=?eig(square);
eigVal?=?diag(eigVal);??
eigVal?=?cumsum(eigVal)?/?sum(eigVal);
k?=?find(eigVal?>=?5e-2?1);
pca?=?eigVect(:?k:end);
trainImages?=?pca‘?*?trainImages;
testImages?=?pca‘?*?testImages;?
%獲得樣本規(guī)模
[mn]?=?size(trainImages);
[rs]?=?size(testImages);
K?=?10;????????????????????????????????????????????????????????%K最好取20以下的數(shù)
testResults?=?zeros(1s);
kLabels?=?zeros(1K);
error?=0;
%開始訓(xùn)練
tic;
for?i?=?1?:?s
????%求出待測(cè)樣本與訓(xùn)練樣本的距離
????colImages?=?repmat(testImages(:i)1n);?
????colImages?=?(trainImages?-?colImages)?.^?2;
????distance?=?sum(colImages)?.^?0.5;
????%找到離待測(cè)樣本最近的k個(gè)訓(xùn)練樣本
????[sortDistpos1]?=?sort(distance);
????for?j?=?1?:?K
????????kLabels(j)?=?trainLabels(pos1(j));
????end
????%訓(xùn)練樣本進(jìn)行投票得到待測(cè)樣本的類別
????count?=?tabulate(kLabels);
????[maxCountpos2]?=?max(count(:2));
????testResults(i)?=?count(pos2);??
????fprintf(‘第%d張圖片\n‘i);
end
%判斷訓(xùn)練結(jié)果
for?i?=?1?:?s
??if?(testResults(i)?~=?testLabels(i))
????error?=?error+1;
??end
end
fprintf(‘正確率為%d\n‘1-error/s);
toc;
%?save?data?error;
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1559??2017-11-14?19:36??matlab\KNN.m
?????文件????????837??2017-11-07?16:51??matlab\loadMNISTImages.m
?????文件????????535??2017-11-03?17:49??matlab\loadMNISTLabels.m
?????文件????????259??2017-11-13?17:13??matlab\Readme.txt
?????文件????7840016??1998-01-26?23:07??matlab\t10k-images.idx3-ubyte
?????文件??????10008??1998-01-26?23:07??matlab\t10k-labels.idx1-ubyte
?????文件???47040016??1996-11-18?23:36??matlab\train-images.idx3-ubyte
?????文件??????60008??1996-11-18?23:36??matlab\train-labels.idx1-ubyte
?????目錄??????????0??2017-11-13?17:02??matlab
-----------?---------??----------?-----??----
?????????????54953238????????????????????9
評(píng)論
共有 條評(píng)論