栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据分析1(Logistic回归)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据分析1(Logistic回归)

这周讲数据分析,我主要讲svm,但是听别人讲Logit回归模型和决策数时,我发现自己有些不清楚的地方,看来接触一个东西就需要学透彻一点,所以,我想好好看看Logistic模型、决策树和SVM,然后总结一下。

目录
  • 1. Logistic回归和Logit回归区别
  • 2. Logistic回归在机器学习、计量经济中的应用
  • 3. 如何使用python实现
  • 4. 如何使用R实现

1. Logistic回归和Logit回归区别

Logit回归模型等式的左边可以理解为log-it,it指odds,也就是胜率,即 p 1 − p frac{p}{1-p} 1−pp​,等式右边是自变量的线性组合。而Logistic回归模型,也就是Logistic函数,等式左边是概率p,等式右边是一个分式。Logistic函数就是机器学习中sigmoid函数。
参考资料:Logit模型和Logistic模型有什么区别?

2. Logistic回归在机器学习、计量经济中的应用

在我之前的认识里,我们一般使用Logistic回归做二分类,如果计算出来概率大于0.5,那么就是Y=1,如果概率小于0.5,那么就是Y=0。在机器学习中,直接将数据喂入模型,然后优化损失函数,通过梯度下降找到最优的参数β,但是今天听师妹讲Logistic回归,她用的例子是用logistic预测用户留存,也是将数据划分为训练集和测试集,分别进行模型的训练,然后还会使用逐步回归剔除一些不显著的变量,我当时觉得很奇怪,怎么在机器学习中没有剔除掉这些变量呢?
首先,如果自变量和因变量之间没有显著的相关关系,还放在回归模型中肯定会影响回归效果,我想删掉变量不就相当于让这个变量的系数变为0么,机器学习像是一个黑盒,我们只关心模型的效果,准确率怎么样,但是为什么?哪些变量是相关的,这些都是不关心的问题,但在计量中,会探究其中的关系,除了相关关系,更重要的是探究因果关系,这样才能回答为什么,解释这种现象背后的机制。

3. 如何使用python实现

一步步用python实现Logistic回归

4. 如何使用R实现
train <- read.csv(file = '.../churn-bigml-80.csv')
test <- read.csv(file = '.../churn-bigml-20.csv')
str(train)

train <- train[,-3]
test <- test[,-3]

train$Churn <- factor(train$Churn, levels = c("False","True"), order = TRUE) 
test$Churn <- factor(test$Churn, levels = c("False","True"), order = TRUE)

model <- glm(Churn ~ .,data = train,family = "binomial")
summary(model)

model2 <- step(object = model,trace = 0)
summary(model2)

anova(object = model2,test = "Chisq")

prob <- predict(object = model2, newdata = test, type = "response") 
pred <- ifelse(prob >= 0.5,"True","False") 
fpred <- factor(pred,levels = c("False","True"), order = TRUE)
f <- table(test$Churn, fpred)
f

# library(pROC)
roc_curve <- roc(test$Churn,prob)
names(roc_curve)
x <- 1-roc_curve$specificities
y <- roc_curve$sensitivities

# library(ggplot2)
p <- ggplot(data = NULL, mapping = aes(x= x, y = y))
p + geom_line(colour = 'red') + geom_abline(intercept = 0, slope = 1) + 
  annotate('text', x = 0.4, y = 0.5, label =paste('AUC=',round(roc_curve$auc,2))) + 
  labs(x = 'FPR or 1-specificities',y = 'TPR or sensitivities', title = 'ROC Curve')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/468273.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号