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计算混淆矩阵(Confusion Matrix)

R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)R语言多分类混淆矩阵可视化

计算R中混淆矩阵的准确度和精度

R语言使用caret包的confusionMatrix函数计算混淆矩阵使用编写的自定义函数可视化混淆矩阵(confusion matrix)

混淆矩阵 - 样本数量不一致的变量[重复]