如何在R Studio中测试经过训练的knn模型的准确性?
目标是训练一个模型来预测默认变量。使用knn3()函数训练k=13的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
# 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
缺少两项功能