gpt4 book ai didi

多类 kNN 中的 ROC

转载 作者:行者123 更新时间:2023-12-04 08:35:19 28 4
gpt4 key购买 nike

我试图在多类 knn 模型和数据集上运行一些 ROC 分析
到目前为止,我有 kNN 模型的这段代码。它运作良好。X_train_new是一个包含 131 个数值变量(列)和 7210 个观测值的数据集。Y_train是我作为因素的结果变量。它是一个只有 1 列(事件)和 7210 个观察值的数据集(有 6 个可能的因素)

ctrl <- trainControl(method  = "cv",
number = 10)

model2 <- train(X_train_new,
Y_train$activity,
method = "knn",
tuneGrid = expand.grid(k = 5),
trControl = ctrl,
metric = "Accuracy"
)
X_test_new是一个包含 131 个数值变量(列)和 3089 个观测值的数据集。 Y_test是我作为因素的结果变量。它是一个只有 1 列和 3089 个观察值的数据集(有 6 个可能的因素)
我运行预测功能
knnPredict_test <- predict(model2 , newdata = X_test_new )
我想对每个类(class)和所有类(class)进行一些 ROC 分析。我想
a = multiclass.roc ( Y_test$activity, knnPredict_test )
knnPredict_test是具有预测类别的向量:
knnPredict_test <- predict(model2 ,newdata = X_test_new )
> length(knnPredict_test)
[1] 3089
> glimpse(knnPredict_test)
Factor w/ 6 levels "laying","sitting",..: 2 1 5 1 3 2 4 5 3 2 ...
这是我得到的错误
Error in roc.default(response, predictor, levels = X, percent = percent,  :   
Predictor must be numeric or ordered.

最佳答案

要获得 ROC,您需要进行数字预测。但是,默认情况下 predict会给你预测的类(class)。使用 type = "prob" .
这是一个具有相同错误的可重现示例。

library(caret)

knnFit <- train(
Species ~ .,
data = iris,
method = "knn"
)

predictions_bad <- predict(knnFit)

pROC::multiclass.roc(iris$Species, predictions_bad)
#> Error in roc.default(response, predictor, levels = X, percent = percent, :
#> Predictor must be numeric or ordered.
使用 type = "prob"修复错误。
predictions_good <- predict(knnFit, type = "prob")

pROC::multiclass.roc(iris$Species, predictions_good)
#> Call:
#> multiclass.roc.default(response = iris$Species, predictor = predictions_good)
#>
#> Data: multivariate predictor predictions_good with 3 levels of iris$Species: setosa, versicolor, virginica.
#> Multi-class area under the curve: 0.9981

关于多类 kNN 中的 ROC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64827272/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com