R中二元Logistic回归的因子输出

问题描述 投票:1回答:2

我正在训练R中的Logistic回归。我使用火车组和测试集。我有一些数据和二进制输出。在数据文件中,输出是整数1或0而没有缺失值。我有1比0(比例是70/30)。

LR的结果是非常不同的取决于我是否输出输出,即如果我将输出变量保持为数字0-1并且我写

m1 <- glm(output~.,data=dt_tr,family=binomial())

然后我得到的东西没有警告和错误,如果我写

dt$output<-as.factor(ifelse(dt$output == 1, "Good", "Bad"))
m1 <- glm(output~.,data=dt_tr,family=binomial())

我的表现完全不同!会是什么呢?

更确切地说,在训练LR之后我做了以下事情:

score <- predict(m1,type='response',dt_test)
m1_pred <- prediction(m1_score, dt_test$output)
m1_perf <- performance(m1_pred,"tpr","fpr")
#ROC
plot(m1_perf, lwd=2, main="ROC")

我得到了非常不同的ROC和AUC。

r logistic-regression categorical-data
2个回答
0
投票

在没有看到您的数据的情况下,我建议将结果变量更改为一个因素会导致问题。

您的原始数据是二进制1/0,这意味着,当它们在回归期间作为数字处理时,它们被视为字面上的1和0.但是当您将它们转换为因子时,这些因子在数值上被视为1和2:

x <- c(0, 1, 1, 0, 0, 1, 1)
y <- as.factor(ifelse(x == 1, "Good", "Bad"))
as.numeric(y)
[1] 1 2 2 1 1 2 2

0
投票

这是我的愚蠢错误。我只是忘记了种子。我想添加的唯一想法是,如果你处理随机森林,那么你必须对输出进行分解,否则R会将其视为数值数据。

© www.soinside.com 2019 - 2024. All rights reserved.