首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R Studio中测试经过训练的knn模型的准确性?

如何在R Studio中测试经过训练的knn模型的准确性?
EN

Stack Overflow用户
提问于 2020-09-25 08:53:17
回答 1查看 607关注 0票数 0

目标是训练一个模型来预测默认变量。使用knn3()函数训练k= 13的KNN模型,并计算测试精度。

到目前为止,我解决这个问题的代码是:

代码语言:javascript
运行
复制
# load packages
library("mlbench")
library("tibble")
library("caret")
library("rpart")

# set seed 
set.seed(49607)

# load data and coerce to tibble
default = as_tibble(ISLR::Default)

# split data
dft_trn_idx = sample(nrow(default), size = 0.8 * nrow(default))
dft_trn = default[dft_trn_idx, ]
dft_tst = default[-dft_trn_idx, ]

# check data
dft_trn

# fit knn model
mod_knn = knn3(default ~ ., data = dft_trn, k = 13)

# make "predictions" with knn model
new_obs = data.frame(balance = 421, income = 28046)
predtrn = predict(mod_knn, new_obs, type = "prob")

confusionMatrix(predtrn,dft_trn)

在代码块的最后一行,我得到错误" error:datareference应该是具有相同级别的因子“。我不确定我如何解决这个问题,或者这是否是测量测试准确性的正确方法。

任何帮助都是最好的,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-25 09:22:31

首先,作为机器学习者,你做得很好,因为一个必要的步骤是将数据拆分成训练集和测试集。我发现的问题是,您正在尝试比较来自测试和训练测试的外部数据的新预测。ML的原理是在训练数据集上训练模型,然后在测试数据集上进行预测,从而最终评估性能。您已经有了相应的数据集(dft_tst)。这里是获取混淆矩阵的代码。需要提醒的是,如果您有一个预测标签而没有要比较的真实标签,则不会计算混淆矩阵。下面是获得所需矩阵的代码:

代码语言:javascript
运行
复制
# load packages
library("mlbench")
library("tibble")
library("caret")
library("rpart")

# set seed 
set.seed(49607)

# load data and coerce to tibble
default = as_tibble(ISLR::Default)

现在,我们分成训练集和测试集:

代码语言:javascript
运行
复制
# split data
dft_trn_idx = sample(nrow(default), size = 0.8 * nrow(default))
dft_trn = default[dft_trn_idx, ]
dft_tst = default[-dft_trn_idx, ]

我们训练模型:

代码语言:javascript
运行
复制
# fit knn model
mod_knn = knn3(default ~ ., data = dft_trn, k = 13)

现在,关键部分是对测试集(或任何标记集)进行预测,并获得混淆矩阵:

代码语言:javascript
运行
复制
# make "predictions" with knn model
predtrn = predict(mod_knn, dft_tst, type = "class")

为了计算混淆矩阵,预测和原始标签必须具有相同的长度:

代码语言:javascript
运行
复制
#Confusion matrix
confusionMatrix(predtrn,dft_tst$default)

输出:

代码语言:javascript
运行
复制
Confusion Matrix and Statistics

          Reference
Prediction   No  Yes
       No  1929   67
       Yes    1    3
                                          
               Accuracy : 0.966           
                 95% CI : (0.9571, 0.9735)
    No Information Rate : 0.965           
    P-Value [Acc > NIR] : 0.4348          
                                          
                  Kappa : 0.0776          
                                          
 Mcnemar's Test P-Value : 3.211e-15       
                                          
            Sensitivity : 0.99948         
            Specificity : 0.04286         
         Pos Pred Value : 0.96643         
         Neg Pred Value : 0.75000         
             Prevalence : 0.96500         
         Detection Rate : 0.96450         
   Detection Prevalence : 0.99800         
      Balanced Accuracy : 0.52117         
                                          
       'Positive' Class : No         
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64056322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档