Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R Studio中测试经过训练的knn模型的准确性?_R - Fatal编程技术网

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

如何在R Studio中测试经过训练的knn模型的准确性?,r,R,目标是训练一个模型来预测默认变量。使用knn3()函数训练k=13的KNN模型,并计算测试精度 到目前为止,我解决此问题的代码是: # load packages library("mlbench") library("tibble") library("caret") library("rpart") # set seed set.seed(49607) # load data and coerce to t

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

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

# 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:
data
reference
应该是具有相同级别的因子”。我不确定如何解决这个问题,或者这是否是测量测试精度的正确方法


任何帮助都会很好,谢谢

首先,作为机器学习者,您做得很好,因为一个必要的步骤是将数据拆分为训练集和测试集。我发现的问题是,您正在尝试比较来自测试和列车测试之外的数据的新预测。ML的原理是在训练数据集上训练模型,然后在测试数据集上进行预测,以便最终评估性能。您有用于此的数据集(
dft\u tst
)。这里的代码可以获得混淆矩阵。提醒您,如果您有一个预测标签,但没有要比较的实际标签,则不会计算混淆矩阵。下面是获得所需矩阵的代码:

# 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, ]
我们培训模型:

# fit knn model
mod_knn = knn3(default ~ ., data = dft_trn, k = 13)
现在,关键部分是对测试集(或任何标记集)进行预测,并获得混淆矩阵:

# make "predictions" with knn model
predtrn = predict(mod_knn, dft_tst, type = "class")
为了计算混淆矩阵,预测和原始标签必须具有相同的长度:

#Confusion matrix
confusionMatrix(predtrn,dft_tst$default)
输出:

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         

您的新的
new\u obs
缺少两项功能