码迷,mamicode.com
首页 > 编程语言 > 详细

R语言学习-KNN临近算法

时间:2017-08-17 00:30:20      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:分类算法   spec   一个   pre   安装方法   分析   测试   index   数据   

概念

  1、监督学习:从给定标注的训练数据中学习出一个函数,根据这个函数为新数据进行标注。

  2、无监督学习:从给定无标注的训练数据中学习出一个函数,根据这个函数为所有数据标注。

 

KNN分类算法:通过对已知类别训练数据集的分析,从中发现分类规则,以此预测新数据的类别,分类算法属于监督学习的类型。

KNN概念:

  1、训练集:用来训练模型或确定模型参数的数据。

  2、测试集:用来验证模型准确性的数据。

  3、交叉验证:一般使用70%的数据作为训练集,剩下30%的数据作为测试集,测试集的测试结果使用交叉表形式进行验证。

 

抽样方法

  sample(x,size,replace=FALSE)

    x-待抽样的样本

    size-抽样的数量

    replace-是否可放回抽样,默认为false

 

KNN方法-需要安装包class

  安装方法:install.packages("class")

    knn(train,test,cl,k=1)

      train-训练数据

      test-测试数据

      cl-训练数据的正确结果

      k-KNN中的K值,默认为1,可以自行设定,直到交叉检验到最好的结果

 

举例:

#install.packages("class");
library(class)

#https://en.wikipedia.org/wiki/Iris_flower_data_set
#https://zh.wikipedia.org/wiki/%E5%AE%89%E5%BE%B7%E6%A3%AE%E9%B8%A2%E5%B0%BE%E8%8A%B1%E5%8D%89%E6%95%B0%E6%8D%AE%E9%9B%86

#计算iris的行数,isis是class包自带的例子
total <- nrow(iris);
#抽样获取70%的行数编号
index <-sample(1:total, total*0.7)

#根据抽样编号获取训练集
iris.train <- iris[index, ]
#根据抽样编号获取测试集,-index就相当于剩下30%
iris.test <- iris[-index, ]

#使用KNN方法根据训练集和测试集来配对函数
#subset()相当于删除训练集和测试集中的species列(结果列)的数据
result.KNN <-knn(
train=subset(iris.train, select=-Species), 
test=subset(iris.test,select=-Species), 
cl=iris.train$Species, k=2
)

#进行交叉检验
table(iris.test$Species, result.KNN)

  

 

R语言学习-KNN临近算法

标签:分类算法   spec   一个   pre   安装方法   分析   测试   index   数据   

原文地址:http://www.cnblogs.com/xugege/p/7376329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!