您的位置:首页 > 其它

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

2013-10-31 21:03 316 查看
Problem:

Develop a k-NN classifier with Euclidean distance and simple voting

Perform 5-fold cross validation, find out which k performs the best (in terms of accuracy)

Use PCA to reduce the dimensionality to 6, then perform 2) again. Does PCA improve the accuracy

问题:

设计一个采用欧式距离的的knn分类器

应用5-fold进行交叉验证,寻找出最好的k值(从准确度考虑)

使用PCA进行降维操作,将维数降至6维,这样应用PCA之后准确率有改善吗?

问题描述: http://archive.ics.uci.edu/ml/datasets/Wine
数据集:
http://archive.ics.uci.edu/ml/machine-learningdatabases/wine/wine.data
开发的knn算法通过计算TestData中每一个观察点和TrainningData中的观察点的距离,得到k个最近距离的索引,然后统计其中频次最高的Class,并将这个Class作为该TestData的Class值。

knn算法的Matlab源代码:

function [OutputClass] = myKNN(TestData,TrainningData,Group,K)
[M,N] = size(TrainningData);
[R,C] = size(TestData);
OutputClass=[];
for i=1:R
diff=TrainningData-repmat(TestData(i,:),M,1);
dist=diff.*diff;
[DistSort,Index]=sort(sum(dist,2),'descend');
N=hist(Group(Index(1:K),:),3);%histgram of class
[MaxClassSort,MaxSort]=sort(N,'descend');
%MaxSort
MaxClass=MaxSort(1);
OutputClass(end+1)=MaxClass;
end
OutputClass=OutputClass';
save('knn.mat');




通过观察PCA处理之后的特征值,发现只有6个特征值不为0,这样采用PCA降维的方法实现的将源数据13维降为6维之后没有损失能量,所以最后直接进行KNN分类的结果和采用PCA分类的结果是一致的,数据处理的难度却下降了。并且当K=1的时候准确率最高。

MaxAccuracy= 0.7525 when k=1 (KNN&PCA+KNN)

PCA算法处理之后的特征值

1

2

3

4

5

6

7

8

9

10

99202

173

9

5

1

1

0

0

0

……

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐