R:画逻辑回归的ROC曲线

加载包含数据集的包:

install.packages("ISLR")
library('ISLR')

查看数据集:

head(Default)

在这里插入图片描述

划分训练集、测试集:

set.seed(123)
data1 = Default
head(data1)
nn = sample(1:nrow(data1), ceiling(nrow(data1) * 0.7), replace = TRUE)
train = data1[nn,]
test = data1[-nn,]

用逻辑回归模型训练:

default_logit = glm(default ~., family = binomial(link = 'logit') ,data = train,
                    maxit=1000)

查看训练的模型信息:

summary(default_logit)

在这里插入图片描述

用模型预测:

p = predict(default_logit, newdata = test, type = 'response') > 0.29

查看p的信息:

summary(p)

在这里插入图片描述

转换为因子变量:

p_factor = factor(ifelse(p, 'Yes', 'No'), levels = c('No', 'Yes'))

查看因子变量的信息:

summary(p_factor)

在这里插入图片描述

生成列联表:

table(test$default, p_factor)

在这里插入图片描述

将列联表转换为矩阵:

matrix = as.matrix(table(test$default, p_factor))

查看矩阵:
在这里插入图片描述

手工计算一些指标:

TN = matrix[1, 1]
TP = matrix[2, 2]
FP = matrix[1, 2]
FN = matrix[2, 1]
accuracy = (TN + TP) / (TN + TP + FP + FN)
recall = TP / (TP + FN)
spec = TN / (TN + FP)
prec = TP / (TP + FP)
F_value = (2 * prec * recall) / (prec + recall)

查看指标的值:
在这里插入图片描述

画ROC曲线:

install.packages('ROCR')
library('ROCR')
pred = prediction(predict(default_logit, newdata = test, type = 'response'), test$default)
performance(pred, 'auc')@y.values
perf = performance(pred, 'tpr', 'fpr')
plot(perf, main='逻辑回归的ROC曲线', lwd=2)
abline(a=0, b=1, lty=2)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值