R语言与机器学习(1)K-近邻算法

R语言与机器学习(1)K-近邻算法

ID:40566106

大小:48.28 KB

页数:8页

时间:2019-08-04

R语言与机器学习(1)K-近邻算法_第1页
R语言与机器学习(1)K-近邻算法_第2页
R语言与机器学习(1)K-近邻算法_第3页
R语言与机器学习(1)K-近邻算法_第4页
R语言与机器学习(1)K-近邻算法_第5页
资源描述:

《R语言与机器学习(1)K-近邻算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、K-近邻算法 原理及举例工作原理:我们知道样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出“距离”最近的k(通常k<20)数据,选择这k个数据中出现最多的分类作为新数据的分类。算法描述:(1)计算已知类别数据及中的点与当前点的距离;(2)按距离递增次序排序(3)选取与当前点距离最小的k个点(4)确定前K个点所在类别出现的频率(5)返回频率最高的类别作为当前类别的预测这里我们使用最常见欧氏距离作为衡量标准,以鸢尾花数据集为例来说明K-近邻算法:鸢尾花数据集包含150个数据,测量变量为花瓣,花萼的长度与宽度,分类

2、变量为setosa,versicolor,和virginica。准备数据:为了了解数据,我们先通过作图分析,相关分析来看看数据分类指标的合理性,这一点十分重要,有助于减少分类指标中的噪声。从上图可以看出,我们通过这2个变量大致是可以把鸢尾花分类的,也就是说分类的特征变量选择是合理的,(同理可以分析另外2个,分类效果不如这两个,但大致上还是能区分的)当然我们也可以选择计算相关系数来看特征变量的合理性。我们很容易发现,数值差最大的属性对距离的影响最大,所以在特征值等权重的假定下,我们先得归一化特征值,计算公式为:Newvalue=(oldvalue-min)/(max-m

3、in)R代码: autonorm<-function(data){for(iin1:length(data))data[i]<-(data[i]-min(data))/(max(data)-min(data))return(data)}data<-as.matrix(apply(iris[,1:4],2,autonorm))得到了归一化后的数据集,下面计算距离。我们在这里取三个数据作为验证集来看看分类的效果,首先将验证集归一化:x<-iris[13,1:4]y<-iris[79,1:4]z<-iris[100,1:4]x<-(x-apply(iris[c(-13,-7

4、9,-100),1:4],2,min))/(apply(iris[c(-13,-79,-100),1:4],2,max)-apply(iris[c(-13,-79,-100),1:4],2,min))y<-(y-apply(iris[c(-13,-79,-100),1:4],2,min))/(apply(iris[c(-13,-79,-100),1:4],2,max)-apply(iris[c(-13,-79,-100),1:4],2,min))z<-(z-apply(iris[c(-13,-79,-100),1:4],2,min))/(apply(iris[c(-1

5、3,-79,-100),1:4],2,max)-apply(iris[c(-13,-79,-100),1:4],2,min))计算距离,仅以x为例,运行代码:(k取5)dis<-rep(0,length(data[,1]))for(iin1:length(data[,1]))dis[i]<-sqrt(sum((z-data[i,1:4])^2))table(data[order(dis)[1:5],5])x,y,z的输出结果为标签xyyz分类1233频数5415虽然对测试y出现了错误分类,但根据多数投票法x,y,z为setosa,versicolor,和virgini

6、ca,得到了正确分类结果。值得一提的是,我们用同样的办法计算K=3时的情形,会发现没有出现误分类。这也就引出了一个值得思考的问题:k应该如何选取?k过小,噪声对分类的影响就会变得非常大,K过大,那么包含错误就理所当然,误分类也不足为奇。虽然这里我们对K的取值并未进行讨论,但在实际中,我们应该通过交叉验证的办法来确定k值。R语言内置函数kknn简介R语言里的kknn包也可以实现最邻近算法——使用kknn函数。kknn(formula=formula(train),train,test,na.action=na.omit(),k=7,distance=2,kernel="

7、optimal",ykernel=NULL,scale=TRUE,contrasts=c('unordered'="contr.dummy",ordered="contr.ordinal"))参数解释:formula一个回归模型,具体为:分类变量~特征变量train训练集test测试集na.action缺失值处理,默认为去掉缺失值kk值选择,默认为7distance这个是明科夫斯基距离,p=2时为欧氏距离其他参数略上面的鸢尾花例子使用kknn包可以实现(k=5): library(kknn) data(iris)m<-dim(iris)[1]val<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。