共计 1215 个字符,预计需要花费 4 分钟才能阅读完成。
如何理解 R 语言分类算法中的距离判别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1. 距离判别原理分析
根据待判定样本与已知类别样本之间的距离远近做出判断. 根据已知类别样本信息建立距离判别函数式, 再将各待判定样本的属性数据逐一代入式中计算, 得到距离值, 再根据此将样本判入距离值最小的类别的样本簇.
K 最近邻算法则是距离判别法中使用最为广泛的, 他的思路是如果 一个样本在特征空间中的 K 个最相似 / 最相邻的样本中的大多数属于某一个类别, 则该样本也属于这个类别.
图中 3 个实心表示样本点, 其周围分布着若干分别用圆形, 三角形, 正方形空心点表示出的三种已知类别的样本点. 现在我们取 K =5, 即圈出与待分类样本点最相近的 5 个样本点, 然后查看他们的类别. 这 5 个点中属于哪个类别的样本多, 该未知样本就属于哪个类别. 易得未知样本 (从左到右) 依次属于圆形, 三角形, 正方形.
K 最近邻方法进行判别时, 由于其主要依靠周围有限邻近样本的信息, 而不是靠判别类域的方法来确定所属类别, 因此对于类域的交叉或重叠较多的待份样本集来说, 该方法较其他方法更为合适.
2. 在 R 语言中的应用
在 K 最近邻 (K-Nearest Neighbor,KNN) 算法中我们主要用到了 class 包里面的
knn(train,test,cl,k=1,1=0,prob=FALSE,use.all=TRUE)函数。
而在有权重的 k 最近邻 (Weighted K-NearestNeighbor,KKNN) 我们主要用到了 kknn 包里的
kknn(formula=formula(train),train,test,na.action=na.omit(),k=7,distance=2,kernel=”optimal”,ykernel=NULL,scale=TRUE,contrasts=c(‘unordered’=”contr.dummy”,ordered=”contrl.rodinal”))函数。
3. 以 iris 数据集为例进行判别分析
1)应用模型并观察输出结果
library(kknn)
fit_pre_kknn=kknn(Species~.,data_train,data_test[,-5],k=5)fit_pre_kknn[1:length(fit_pre_kknn)]
2)检测模型准确度
table(data_test$Species, fit_pre_kknn$fitted.values)
sum(as.numeric(as.numeric(fit_pre_kknn $fitted.values)!=as.numeric(data_test$Species)))/nrow(data_test)
看完上述内容,你们掌握如何理解 R 语言分类算法中的距离判别的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!