【问题标题】:Confusion matrix with KNN in R?R中的KNN混淆矩阵?
【发布时间】: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

【问题讨论】:

    标签: r machine-learning knn confusion-matrix


    【解决方案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 文件很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2018-08-23
    • 2014-07-09
    • 2020-07-06
    相关资源
    最近更新 更多