R中的KNN混淆矩阵?
Posted
技术标签:
【中文标题】R中的KNN混淆矩阵?【英文标题】:Confusion matrix with KNN in R? 【发布时间】:2022-01-05 21:10:40 【问题描述】:如何生成混淆矩阵以查看 R 中 KNN 模型的准确率、召回率和 F 分数?这是我的 KNN 模型的 R 代码:
nn <- knn(train = train.norm.df[, 1:14], test = new.norm.df, cl = train.norm.df[, 3], k = 3)
如何在混淆矩阵中显示此模型 nn
?
降价文件:https://rpubs.com/evanmullen36/840780
【问题讨论】:
【参考方案1】:这是您尝试使用 R 中包含的 iris
数据集执行的操作的示例。首先,我们需要训练和测试数据子集:
library(class)
data(iris)
set.seed(42)
idx <- seq(nrow(iris))
train <- unname(unlist(tapply(idx, iris$Species, sample, size=25)))
train <- sort(train)
test <- idx[!idx %in% train]
现在你可以使用最近邻函数了:
predict <- knn(iris[train, 1:4], iris[test, 1:4], iris$Species[train])
(conftbl <- table(Species=iris$Species[test], Predict=predict))
# Predict
# Species setosa versicolor virginica
# setosa 25 0 0
# versicolor 0 25 0
# virginica 0 2 23
Correct <- sum(diag(conftbl))/sum(conftbl) * 100
cat("Percent Correct = ", round(Correct, 2))
# Percent Correct = 97.33
请注意,在您的示例中,您在 train=
和 cl=
参数中都包含了一个列(第 3 列在两者中)。这意味着您使用类成员资格来预测循环的类成员资格。如果第 3 列是班级成员,您应该使用 train = train.norm.df[, c(1:2, 4:14)]
和 test = new.norm.df[, c(1:2, 4:14)]
。
【讨论】:
刚刚在您发布此内容时提交了编辑。我分享了我的 RMarkdown 文件很有帮助。以上是关于R中的KNN混淆矩阵?的主要内容,如果未能解决你的问题,请参考以下文章
R语言加载UCI糖尿病数据集并启动Rattle GUI调用party包中的ctree函数构建条件推理树模型Rattle混淆矩阵使用R自定义编写函数通过混淆矩阵计算特异度敏感度PPVNPV
R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)R语言多分类混淆矩阵可视化
R语言使用caret包的confusionMatrix函数计算混淆矩阵使用编写的自定义函数可视化混淆矩阵(confusion matrix)