資源簡介
Matlab實現(xiàn)的Knn算法,用于數(shù)字圖像分類,具有很高的準確率

代碼片段和文件信息
%clear
clear;close?all;clc
%load?data
train_data=load(‘train.csv‘);
[mn]=size(train_data);
trainY=train_data(:1);
trainX=train_data(:2:n);
[mn]=size(trainX);
fprintf(‘Load?the?train?data.Finished??%d*%d?Matrix‘mn);
test_data=load(‘test.csv‘);
testX=test_data(::);
[testmtestn]=size(testX);
fprintf(‘Load?the?test?data.Finished?.?%d*%d?Matrix‘testmtestn);
%realize?knn?algorithm
result=zeros(testm1);
num=10;%choose?10?neigborhood
for?testi=1:testm
????hasnum=1;
????bestdistance=zeros(num1);
????bestresult=zeros(num1);
????for?traini=1:m
????????distance=sqrt(sum((testX(testi:)-trainX(traini:)).*(testX(testi:)-trainX(traini:))));
????????if?hasnum<=num
????????????bestdistance(hasnum1)=distance;
????????????bestresult(hasnum1)=trainY(traini);
????????????hasnum=hasnum+1;
????????elseif?max(bestdistance)>distance
????????????[mn]=max(bestdistance);
????????????bestdistance(n)=distance;
????????????bestresult(n)=trainY(traini);
????????????%next
????????end
????end
????%choose?the?result
????digit=zeros(101);
????for?label=1:num
???????????digit(bestresult(label)+1)=digit(bestresult(label)+1)+1;
????end
????[rmrindex]=max(digit);
????result(testi)=rindex-1;
end
%write?the?result?to?file
fprintf(‘write?the?answer?to?csv?file....‘);
csvwrite(‘knn_20120926_1628.csv‘result);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1375??2011-09-26?17:08??knn\knntest.asv
?????文件???????1376??2011-09-26?19:03??knn\knntest.m
?????文件??????84000??2011-09-26?20:31??knn\knn_20120926_1628.csv
?????目錄??????????0??2012-10-16?15:50??knn
-----------?---------??----------?-----??----
????????????????86751????????????????????4
評論
共有 條評論