微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 Logistic 正则化 glmnet 代码会得到 0 和 1 以外的概率?

如何解决为什么我的 Logistic 正则化 glmnet 代码会得到 0 和 1 以外的概率?

library(tidyverse)
library(caret)
library(glmnet)

creditdata <- read_excel("R bestanden/creditdata.xlsx")
df <- as.data.frame(creditdata)
df <- na.omit(df)
df$married <- as.factor(df$married)
df$graduate_school <- as.factor(df$graduate_school)
df$high_school <- as.factor(df$high_school)
df$default_payment_next_month <- as.factor(df$default_payment_next_month)
df$sex <- as.factor(df$sex)
df$single <- as.factor(df$single)
df$university <- as.factor(df$university)
set.seed(123)
training.samples <- df$default_payment_next_month %>% 




createDataPartition(p = 0.8,list = FALSE)
train.data  <- df[training.samples,]
test.data <- df[-training.samples,]
x <- model.matrix(default_payment_next_month~.,train.data)[,-1]
y <- ifelse(train.data$default_payment_next_month == 1,1,0)

cv.lasso <- cv.glmnet(x,y,alpha = 1,family = "binomial")
lasso.model <- glmnet(x,family = "binomial",lambda = cv.lasso$lambda.1se)
x.test <- model.matrix(default_payment_next_month ~.,test.data)[,-1]
probabilities <- lasso.model %>% predict(newx = x.test)
predicted.classes <- ifelse(probabilities > 0.5,"1","0")
observed.classes <- test.data$default_payment_next_month
mean(predicted.classes == observed.classes)

大家好,

我是 R 新手,我一直在尝试使用本网站 http://www.sthda.com/english/articles/36-classification-methods-essentials/149-penalized-logistic-regression-essentials-in-r-ridge-lasso-and-elastic-net/ 上的确切代码来执行逻辑岭回归。 我的目标是预测客户是否有信用卡违约,我们有一个包含因子变量和数值变量的数据集。问题是我的大多数概率都是负的并且小于 -1,所以 -2.6、-1.4 等等。有谁知道这里出了什么问题?

预先感谢您的帮助!

解决方法

就像 glm 一样,默认情况下 predictglmnet 函数返回 predictions on the scale of the link function,这不是概率。

要获得预测概率,请将 type = "response" 添加到 predict 调用:

probabilities <- lasso.model %>% predict(newx = x.test,type = "response")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?