R语言:KNN算法的实现——kknn包

R 语⾔:KNN 算法的实现——kknn 包
蛋白质工程在前⽂中,我们已经介绍过了KNN算法的原理以及其python实现,具体请见。
本⽂将主要介绍KNN算法的R语⾔实现,使⽤的R包是kknn。
数据简介
青岛小港本⽂数据选择了红酒质量分类数据集,这是⼀个很经典的数据集,原数据集中“质量”这⼀变量取值有{3,4,5,6,7,8}。为了实现⼆分类问题,我们添加⼀个变量“等级”,并将“质量”为{3,4,5}的观测划分在等级0中,“质量”为{6,7,8}的观测划分在等级1中。因变量:等级
⾃变量:⾮挥发性酸性、挥发性酸性、柠檬酸、剩余糖分、氯化物、游离⼆氧化硫、⼆氧化硫总量、浓度、pH、硫酸盐、酒精library(openxlsx)
wine = read.xlsx("C:/Users/Mr.Reliable/Desktop/classification/winequality-red.xlsx")
#将数据集分为训练集和测试集,⽐例为7:3
train_sub = sample(nrow(wine),7/10*nrow(wine))
train_data = wine[train_sub,]
test_data = wine[-train_sub,]
KNN 的实现
R 包下载
install.packages('kknn')
实现KNN
kknn函数的重要参数:
参数晋城市煤炭工业局
意义formula
~,确定⾃变量和因变量train
训练集test
测试集k
默认为7,表⽰选择7个最近的样本为代表distance 默认为2,表⽰使⽤的是哪个明可夫斯基距离
kernel
可以选择的选项:rectangular(⽆权
重),triangular,epanechnikov,biweight,triweight,cos,inv,gaussian,rank,optimal(默认)kknn还有⼀些其他的参数,具体可以参考
library(pROC) #绘制ROC 曲线
library(kknn)
#数据预处理
train_data$等级 = factor(train_data$等级)
test_data$等级 = factor(test_data$等级)
wine_knn <- kknn(等级 ~  ⾮挥发性酸性+挥发性酸性+柠檬酸+剩余糖分
+氯化物+游离⼆氧化硫+⼆氧化硫总量+浓度+pH+硫酸盐+酒精,
train_data,test_data,k=7,distance = 2)
这样我们就实现了KNN算法
ROC 曲线和AUC 值
y x ++x n
#在测试集上预测
利维爱pre_knn <- fitted(wine_knn)
#输出混淆矩阵丙烯酸酯类
table(test_data$等级, pre_knn,dnn=c("真实值","预测值"))
#绘制ROC曲线并计算AUC值
knn_roc <- roc(test_data$等级,as.numeric(pre_knn))
plot(knn_roc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),l=c("green", "red"), max.auc.polygon=TRUE,l="skyblue", print.thr es=TRUE,main='knn算法ROC曲线')
酸化油选择不同的kernel和k值将对模型的结果产⽣影响。⼀般来讲,使⽤默认值的效果⽐较好。

本文发布于:2024-09-21 15:32:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326068.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   酸性   氧化硫   质量   测试   挥发性   算法   分类
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议