-
大小: 7KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-18
- 語言: Matlab
- 標(biāo)簽: 機(jī)器學(xué)習(xí)??KNN??
資源簡介
對4組不同的信號分別采集20組,總共80組,然后經(jīng)過特征提取(特征數(shù)量為8個),得到80x8的矩陣。
劃分?jǐn)?shù)據(jù)集:將64組數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),16組數(shù)據(jù)作為測試數(shù)據(jù),4類信號在訓(xùn)練集和測試集的數(shù)量比例相同,將訓(xùn)練集和測試集整體歸一化,再分別作為KNN的輸入。
源程序是利用KNN算法對訓(xùn)練集和測試集整體歸一化后的測試數(shù)據(jù)進(jìn)行分類,得到分類準(zhǔn)確率。

代碼片段和文件信息
clear;
clc;
%?訓(xùn)練數(shù)據(jù)、訓(xùn)練數(shù)據(jù)標(biāo)簽、測試數(shù)據(jù)、測試數(shù)據(jù)標(biāo)簽
load([‘C:\Users\Administrator\Desktop\MATLAb?Programming?practice\KNN算法的MATLAB代碼實(shí)現(xiàn)\train_scale.mat‘]);
load([‘C:\Users\Administrator\Desktop\MATLAb?Programming?practice\KNN算法的MATLAB代碼實(shí)現(xiàn)\train_labels.mat‘]);
load([‘C:\Users\Administrator\Desktop\MATLAb?Programming?practice\KNN算法的MATLAB代碼實(shí)現(xiàn)\test_scale.mat‘]);
load([‘C:\Users\Administrator\Desktop\MATLAb?Programming?practice\KNN算法的MATLAB代碼實(shí)現(xiàn)\test_labels.mat‘]);
K=8;???%?k一般低于訓(xùn)練樣本數(shù)的平方根
error=0;
[mtrainntrain]=size(train_scale);
[mtestntest]=size(test_scale);
%?外循環(huán)控制測試數(shù)據(jù),內(nèi)循環(huán)控制訓(xùn)練數(shù)據(jù)
for?i=1:mtest
????dist=zeros(mtrain1);
????for?j=1:mtrain
????????dist(j)=norm(train_scale(j:)-test_scale(i:));??%計(jì)算訓(xùn)練數(shù)據(jù)集與測試數(shù)據(jù)之間的歐氏距離dist
????end
????%將dist從小到大進(jìn)行排序
????[YI]=sort(dist1);
????
????%將訓(xùn)練數(shù)據(jù)對應(yīng)的類別與訓(xùn)練數(shù)據(jù)排序結(jié)果對應(yīng)
????train_labels=train_labels(I);
????
????%確定前K個點(diǎn)所在類別的出現(xiàn)頻率
????classNum=length(unique(train_labels));%取集合中的單值元素的個數(shù)得到類別數(shù)量
????predict_labels=zeros(1classNum);
????
????%?以下for循環(huán)統(tǒng)計(jì)分類的標(biāo)簽數(shù)量
????for?j=1:K
????????j=train_labels(j);
????????predict_labels(j)=predict_labels(j)+1;
????end
????
????%返回前K個點(diǎn)中出現(xiàn)頻率最高的類別作為測試數(shù)據(jù)的預(yù)測分類
????[~idx]=max(predict_labels);
????
????fprintf(‘該測試數(shù)據(jù)屬于類?%d\n‘idx);
????fprintf(‘該測試數(shù)據(jù)的真實(shí)類為:%d\n‘test_labels(i));
????if?idx~=test_labels(i)
????????error=error+1;
????end
end
accuracy=(1-error/mtest)*100;
fprintf(‘準(zhǔn)確率為:%f%%\n‘a(chǎn)ccuracy);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1640??2020-09-16?11:34??基于MATLAB的KNN算法實(shí)現(xiàn)多分類\main_KNN.m
?????文件????????192??2020-09-16?09:53??基于MATLAB的KNN算法實(shí)現(xiàn)多分類\test_labels.mat
?????文件???????1162??2020-09-16?09:55??基于MATLAB的KNN算法實(shí)現(xiàn)多分類\test_scale.mat
?????文件????????194??2020-09-16?09:52??基于MATLAB的KNN算法實(shí)現(xiàn)多分類\train_labels.mat
?????文件???????3835??2020-09-16?09:47??基于MATLAB的KNN算法實(shí)現(xiàn)多分類\train_scale.mat
?????目錄??????????0??2020-09-16?11:35??基于MATLAB的KNN算法實(shí)現(xiàn)多分類
-----------?---------??----------?-----??----
?????????????????7023????????????????????6
評論
共有 條評論