gpt4 book ai didi

r - R 中的支持向量机 : "Predictor must be numeric or ordered."

转载 作者:行者123 更新时间:2023-12-02 23:06:35 24 4
gpt4 key购买 nike

我是 R 新手,遇到了这个问题:我想比较两种预测技术(支持向量机和神经网络),将它们应用于某些数据,并且我想比较它们的性能。为此,我使用 ROC 曲线。该代码应该计算 ROC 曲线下的面积,但它不起作用。神经网络代码工作正常,但是当 SVM 部分执行时出现此错误:

> aucs <- auc((dtest$recid=="SI")*1, lr.pred)

Error in roc.default(response, predictor, auc = TRUE, ...) : Predictor must be numeric or ordered.

> obj.roc <- roc((dtest$recid=="SI")*1, lr.pred )

Error in roc.default((dtest$recid == "SI") * 1, lr.pred) : Predictor must be numeric or ordered.

这是我的代码。

library(stats)
library(pROC)
library(nnet)
library(e1071)
library(rpart)

data <- read.table("data.csv", header=T)

set.seed(1234)
ind <- sample(2, nrow(data), replace=TRUE, prob=c(0.8, 0.2))
dtrain <- data[ind==1,]
dtest <- data[ind==2,]

# Variables for storing comparison results #
bestAuc = 0
bestIdx = 0

# Support Vector Machines
lr.fit <- svm(recid~., data=dtrain, cost=1000, gamma=1, probability=TRUE)
lr.pred <- predict(lr.fit, dtest, type="response")
aucs <- auc((dtest$recid=="SI")*1, lr.pred)
obj.roc <- roc((dtest$recid=="SI")*1, lr.pred)

print("SVN (default)")
bestAuc = aucs # Initialize


# Neural networks
lr.fit <- nnet(recid~., data=dtrain, size=4, maxit=500, decay=1, trace=FALSE)
lr.pred <- predict(lr.fit, dtest, type="raw")
aucs <- auc((dtest$recid=="SI")*1, lr.pred)
obj.roc <- roc((dtest$recid=="SI")*1, lr.pred )

if(aucs > bestAuc) {
bestAuc <- aucs
bestIdx <- 1
print("Neural networks")
}

我一直在寻找信息,但似乎关于我正在使用的方法的信息很少。我看到一个名为 ROCR 的包,我认为它可能有用,但我也遇到性能函数错误。我对所有这些库有点迷失,所以我尝试坚持我最初的解决方案,没有任何改进。我该怎么办?


编辑:

该解决方案基于 Calimo 的想法。预测的返回值没有给出我想要的格式的数据,所以我需要使用这个:

lr.pred <- attr(lr.pred,"probabilities")[,c("SI")]

这句话获取ROC曲线中要分析的列。

最佳答案

正如错误消息所示,您需要 lr.pred 中的数字向量或有序因子。这里的问题是预测(对于 svm)返回预测的类,使得 ROC 练习几乎毫无用处。

您需要的是获得内部分数,例如类别概率:

lr.pred <- predict(lr.fit, dtest, probability = TRUE)

(您必须选择获得第一类或第二类的概率。另请注意,type = "response" 将被忽略。)

关于r - R 中的支持向量机 : "Predictor must be numeric or ordered.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459476/

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