R 中用于逻辑回归的混淆矩阵
confusionMatrix for logistic regression in R
我想使用训练数据和测试数据为我的逻辑回归计算两个混淆矩阵:
logitMod <- glm(LoanStatus_B ~ ., data=train, family=binomial(link="logit"))
我将预测概率的阈值设置为0.5:
confusionMatrix(table(predict(logitMod, type="response") >= 0.5,
train$LoanStatus_B == 1))
下面的代码很适合我的训练集。
但是,当我使用测试集时:
confusionMatrix(table(predict(logitMod, type="response") >= 0.5,
test$LoanStatus_B == 1))
它给了我一个
的错误
Error in table(predict(logitMod, type = "response") >= 0.5, test$LoanStatus_B == : all arguments must have the same length
这是为什么?我怎样才能解决这个问题?谢谢!
我认为predict的使用有问题,因为你忘了提供新的数据。此外,您可以使用 caret
包中的函数 confusionMatrix
来计算和显示混淆矩阵,但您不需要在调用之前 table 结果。
在这里,我创建了一个包含代表性二进制目标变量的玩具数据集,然后我训练了一个类似于您所做的模型。
train <- data.frame(LoanStatus_B = as.numeric(rnorm(100)>0.5), b= rnorm(100), c = rnorm(100), d = rnorm(100))
logitMod <- glm(LoanStatus_B ~ ., data=train, family=binomial(link="logit"))
现在,您可以预测数据(例如,您的训练集),然后使用带有两个参数的 confusionMatrix()
:
- 您的预测
- 观察到的类
library(caret)
# Use your model to make predictions, in this example newdata = training set, but replace with your test set
pdata <- predict(logitMod, newdata = train, type = "response")
# use caret and compute a confusion matrix
confusionMatrix(data = as.numeric(pdata>0.5), reference = train$LoanStatus_B)
这是结果
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 66 33
1 0 1
Accuracy : 0.67
95% CI : (0.5688, 0.7608)
No Information Rate : 0.66
P-Value [Acc > NIR] : 0.4625
我想使用训练数据和测试数据为我的逻辑回归计算两个混淆矩阵:
logitMod <- glm(LoanStatus_B ~ ., data=train, family=binomial(link="logit"))
我将预测概率的阈值设置为0.5:
confusionMatrix(table(predict(logitMod, type="response") >= 0.5,
train$LoanStatus_B == 1))
下面的代码很适合我的训练集。 但是,当我使用测试集时:
confusionMatrix(table(predict(logitMod, type="response") >= 0.5,
test$LoanStatus_B == 1))
它给了我一个
的错误Error in table(predict(logitMod, type = "response") >= 0.5, test$LoanStatus_B == : all arguments must have the same length
这是为什么?我怎样才能解决这个问题?谢谢!
我认为predict的使用有问题,因为你忘了提供新的数据。此外,您可以使用 caret
包中的函数 confusionMatrix
来计算和显示混淆矩阵,但您不需要在调用之前 table 结果。
在这里,我创建了一个包含代表性二进制目标变量的玩具数据集,然后我训练了一个类似于您所做的模型。
train <- data.frame(LoanStatus_B = as.numeric(rnorm(100)>0.5), b= rnorm(100), c = rnorm(100), d = rnorm(100))
logitMod <- glm(LoanStatus_B ~ ., data=train, family=binomial(link="logit"))
现在,您可以预测数据(例如,您的训练集),然后使用带有两个参数的 confusionMatrix()
:
- 您的预测
- 观察到的类
library(caret)
# Use your model to make predictions, in this example newdata = training set, but replace with your test set
pdata <- predict(logitMod, newdata = train, type = "response")
# use caret and compute a confusion matrix
confusionMatrix(data = as.numeric(pdata>0.5), reference = train$LoanStatus_B)
这是结果
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 66 33
1 0 1
Accuracy : 0.67
95% CI : (0.5688, 0.7608)
No Information Rate : 0.66
P-Value [Acc > NIR] : 0.4625