逻辑回归算法?

By 陆勤 at 2019-05-21 • 0人收藏 • 142人看过

逻辑回归用于基于一个或多个预测变量(x)预测个体的类。 它用于建模二元结果,即变量,它只能有两个可能的值:0或1,是或否,患病或无患病。


Logistic回归属于一个名为广义线性模型(GLM)的族,用于将线性回归模型扩展到其他情境。 其他同义词是二元逻辑回归,二项Logistic回归和logit模型。


逻辑回归不直接返回观察类。 它允许我们估计类成员的概率(p)。 概率介于0和1之间。您需要确定类别从一种情况转移到另一种情况的的阈值概率。 默认情况下,此值设置为p = 0.5,但实际上应根据分析目的进行确定。


R语言实现逻辑回归算法

# 加载R包
library(tidyverse) #数据科学套件包
library(caret) # 分类和回归统一包
theme_set(theme_bw())

# 数据准备
# 加载数据集并且移除缺失值样本集
data('PimaIndiansDiabetes2', package = 'mlbench')
PimaIndiansDiabetes2 <- na.omit(PimaIndiansDiabetes2)
# 数据检视
sample_n(PimaIndiansDiabetes2, 5)
# 数据集划分
# 训练集和测试集
set.seed(123)
training.sample <- PimaIndiansDiabetes2$diabetes %>% 
  createDataPartition(p = 0.8, list = FALSE)

# 训练集
train.data <- PimaIndiansDiabetes2[training.sample, ]
# 测试集
test.data <- PimaIndiansDiabetes2[-training.sample, ]

# 模型构建
# 拟合模型
model <- glm(
  diabetes ~ .,
  data = train.data,
  family = binomial
)
# 模型摘要
summary(model)
# 模型预测
probabilities <- model %>% predict(test.data, type = 'response')
predicted.classes <- ifelse(probabilities > 0.5, 'pos', 'neg')
# 模型的准确率
mean(predicted.classes == test.data$diabetes)

# 简单的逻辑回归模型
model <- glm(
  diabetes ~ glucose,
  data = train.data,
  family = binomial
)
summary(model)$coef

newdata <- data.frame(glucose = c(20, 80))
newdata
probabilities <- model %>% predict(newdata, type = 'response')
probabilities
predicted.classes <- ifelse(probabilities > 0.5, 'pos', 'neg')
predicted.classes

# 逻辑回归拟合的S曲线
train.data %>% 
  mutate(prob = ifelse(diabetes == 'pos', 1, 0)) %>% 
  ggplot(aes(glucose, prob)) +
  geom_point(alpha = 0.2) +
  geom_smooth(method = 'glm', method.args = list(family = 'binomial')) +
  labs(
    title = "Logistic Regression Model", 
    x = "Plasma Glucose Concentration",
    y = "Probability of being diabete-pos"
  )

# 多元逻辑回归分析
model <- glm(
  diabetes ~ glucose + mass + pregnant,
  data = train.data,
  family = binomial
)
summary(model)$coef
coef(model)
summary(model)$coef


参考资料:

http://www.sthda.com/english/articles/36-classification-methods-essentials/151-logistic-regression-essentials-in-r/



登录后方可回帖

信息栏
数据人网是数据人学习、交流和分享的平台,专注于从数据中学习,努力发觉数据之洞见,积极利用数据之价值
Loading...