Problem:

  1. Develop a k-NN classifier with Euclidean distance and simple voting
  2. Perform 5-fold cross validation, find out which k performs the best (in terms of accuracy)
  3. Use PCA to reduce the dimensionality to 6, then perform 2) again. Does PCA improve the accuracy
问题:
  1. 设计一个采用欧式距离的的knn分类器
  2. 应用5-fold进行交叉验证,寻找出最好的k值(从准确度考虑)
  3. 使用PCA进行降维操作,将维数降至6维,这样应用PCA之后准确率有改善吗?

开发的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算法处理之后的特征值

……

【StatLearn】统计学习中knn算法的实验(1)的更多相关文章

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

    接着统计学习中knn算法实验(1)的内容 Problem: Explore the data before classification using summary statistics or vis ...

  2. 学习OpenCV——KNN算法

    转自:http://blog.csdn.net/lyflower/article/details/1728642 文本分类中KNN算法,该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似( ...

  3. Machine Learning In Action 第二章学习笔记: kNN算法

    本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数 ...

  4. 统计学习中感知机的C++代码

    感知机是古老的统计学习方法,主要应用于二类线性可分数据,策略是在给定的超平面上对误差点进行纠正,从而保证所有的点都是正确可分的. 用到的方法是随机梯度下降法,由于是线性可分的,可保证最终在有限步内收敛 ...

  5. KNN算法的R语言实现

    近邻分类 简言之,就是将未标记的案例归类为与它们最近相似的.带有标记的案例所在的类. 应用领域: 1.计算机视觉:包含字符和面部识别等 2.推荐系统:推荐受众喜欢电影.美食和娱乐等 3.基因工程:识别 ...

  6. 机器学习(一)之KNN算法

    knn算法原理 ①.计算机将计算所有的点和该点的距离 ②.选出最近的k个点 ③.比较在选择的几个点中那个类的个数多就将该点分到那个类中 KNN算法的特点: knn算法的优点:精度高,对异常值不敏感,无 ...

  7. 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验

    实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...

  8. SVM(支持向量机)与统计机器学习 & 也说一下KNN算法

    因为SVM和统计机器学习内容很多,所以从 http://www.cnblogs.com/charlesblc/p/6188562.html 这篇文章里面分出来,单独写. 为什么说SVM和统计学关系很大 ...

  9. 【转载】K-NN算法 学习总结

    声明:作者:会心一击 出处:http://www.cnblogs.com/lijingchn/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

随机推荐

  1. WeX5 苹果APP打包教程

    来源:http://docs.wex5.com/app-packing/ WeX5平台App打包教程 WeX5是前端快速开发框架,可开发跨端运行应用,是移动App/微信/WebApp开发利器,一次开发 ...

  2. 解决php收邮件乱码问题

    function test($strHead){ if(ereg("=\?.{0,}\?[Bb]\?",$strHead)){ $arrHead=split("=\?.{ ...

  3. 马士兵Spring-dataSource

    一.简单使用例子: 这里使用commons.dbcp: beanx.xml配置: <?xml version="1.0" encoding="UTF-8" ...

  4. UE4 的json读写方式

    转自:http://blog.csdn.net/cartzhang/article/details/41009343 JSON 的解析有很多开源库.UE4的JSON使用在代码的Public->S ...

  5. samba性能调优

    不知道有多少公司的内部打印及文件服务器是用的Linux,我想肯定不会太多,因为Windows实现起来更方便,更快速,当然,Windows也 是更Danger. 因为Windows有太多不确定性的东西, ...

  6. 「小程序JAVA实战」小程序的举报功能开发(68)

    转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/ 通过点击举报 ...

  7. 「小程序JAVA实战」小程序的视频展示页面初始化(63)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeshipinzhanshiyemianchushihua62/ 进 ...

  8. 【330】word - VBA 相关实现

    参考:Object model (Word VBA reference) 序号 类名称   功能说明   语法 & 举例 01 Selection   ====<<<< ...

  9. 归纳整理Linux下C语言常用的库函数----文件操作

    在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...

  10. manjaro 下golang protobuf的使用

    1.下载protobuf compiler sudo pacman -S protobuf 2.添加环境变量GOBIN export GOBIN=~/go/bin 3.下载golang依赖的包 go ...