为什么写这篇文章

本人初学python,碰巧做的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘。结果大囧==..出来的相关结果少得可怜,只有一个实现好的代码,但是看了下实现的比较粗糙,梯度下降部分用的是固定步长..于是抱着死马当活马医心态google了一下,结果发现有不少成熟的统计和科学计算的包里面已经实现好了,比如statsmodels,于是本文就讲一下怎么用statsmodels做Logistic回归好啦~

吐槽下..学术上的事果然还是国外比国内靠谱得多..

什么是Logistic回归

用处

Logistic回归主要用于分类,即给定一个用数值表示的特征向量X(粗体表示向量),求出这个向量所属的类别Y

当然,可以用来分类的算法很多,比如SVM,神经网络等。但是这些算法都比较复杂,要掌握其细节有些难度。Logistic回归虽然简单,但是在很多情况下也能得到很好的效果

函数形式及学习参数的算法

Logistic回归的函数属于sigmoid函数,就相当于把sigmoid的自变量替换成多元线性回归的自变量部分(等号右边)即可

学习自变量X的参数θ的方法是梯度下降法(GradientDescent),核心思想就是根据原函数的特性,构造出一个准则函数J(θ),这个准则函数的特性是J(θ)的值越小,原函数的拟合程度就越好。然后随机对θ赋初值,每一次迭代计算出J(θ)的梯度▽J(θ),我们知道函数的梯度是函数值上升最快的方向,所以这里取梯度的负方向-▽J(θ),再乘以一个步长η(k),就可以得到每次迭代后更新的参数θ=θ-η(k)▽J(θ)。其中k是当前迭代次数,这里取步长η(k)稍微有点复杂,初学时可以简单地取一个定值。

这里写的比较简略,具体可以参考这个博文,如果还不太明白请百度Logistic回归或梯度下降吧~

用statsmodels做Logistic回归

statsmodels是python的一个做统计建模,计量经济学分析的扩展包,输出的结果真心相当舒服,跟各大统计软件的结果输出很像,比如拟合出来Logistic回归模型后:

printresult.summary(),可以得到如下结果

Logit Regression Results

==============================================================================

Dep. Variable:                  admit   No. Observations:                  400

Model:                          Logit   Df Residuals:                      394

Method:                           MLE   Df Model:                            5

Date:                Sun, 03 Mar 2013   Pseudo R-squ.:                 0.08292

Time:                        12:34:59   Log-Likelihood:                -229.26

converged:                       True   LL-Null:                       -249.99

LLR p-value:                7.578e-08

==============================================================================

coef    std err          z     P>|z|      [95.0% Conf.Int.]

------------------------------------------------------------------------------

gre            0.0023      0.001     2.070      0.038         0.000     0.004

gpa            0.8040      0.332     2.423      0.015         0.154     1.454

prestige_2    -0.6754     0.316     -2.134      0.033        -1.296    -0.055

prestige_3    -1.3402     0.345     -3.881      0.000        -2.017    -0.663

prestige_4    -1.5515     0.418     -3.713      0.000        -2.370    -0.733

intercept     -3.9900      1.140    -3.500      0.000        -6.224    -1.756

==============================================================================

预测的话:

combos['admit_pred']=result.predict(combos[train_cols])

print combos.head()

#    gre       gpa prestige  intercept  prestige_2 prestige_3  prestige_4  admit_pred

# 0  220  2.260000         1          1           0           0           0   0.157801

# 1  220  2.260000         2          1           1           0           0   0.087056

# 2  220  2.260000         3          1           0           1           0   0.046758

# 3  220  2.260000         4          1           0           0           1   0.038194

# 4  220  2.453333         1          1           0           0           0   0.179574

是不是很舒服呢?

具体用法参考这篇博文吧,虽然是英文的,不过写的确实很好,直接看代码的话也能看懂~

如果那篇博文打不开的话,试试国内转载的吧,就是排版没有原版的舒服

另外,如果不想安装那篇博文提到的Enthought Free Distribution的话,可以参考我的一篇博文来安装对应的扩展包,如果不需要画图的话,可以不装matplotlib。另外,statsmodels还需要安装patsy

python做logistic回归_用Python做Logistic回归相关推荐

  1. python大数据免费_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  2. python怎么做软件程序_看 Python 超级程序员使用什么开发工具

    Python超级程序员使用的开发工具 我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发 ...

  3. 用python做自我介绍_用python做个自我介绍(python入门教程)_逻辑教育

    原标题:用python做个自我介绍(python入门教程)_逻辑教育 本文涉及的python基础语法为:数据类型等 数字类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里 ...

  4. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  5. 编程游戏python我的世界_乐学Python编程-做个游戏很简单

    1.进入Python 编程世界/ 2 1.1 启动Python 编程环境/ 5 1.2 Python 之禅/ 9 1.3 送你几朵玫瑰花--运行Python 程序/ 16 1.4 Python 的由来 ...

  6. python做股票分析_利用Python进行股票投资组合分析(调试)

    pythonsp500-robo-advisor-edition Python for Financial Analyses 需要的镜像文件和数据--Robo Advisor edition. 小结 ...

  7. 用python自动办公 百度_用Python自动办公,做职场高手,16章完整版百度云盘

    01.文件 [12.20更新课程代码]用Python自动办公做职场高手.rar [课程代码]从零写Python练手项目:实用脚本.zip [课程代码]四周实现爬虫网站.zip [课程代码]用NumPy ...

  8. 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...

    python项目练习一:即时标记 这是<python基础教程>后面的实践,照着写写,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能 ...

  9. python名片制作代码_教你做一张能运行 Python 的名片,成本只要20元!

    原标题:教你做一张能运行 Python 的名片,成本只要20元! 作为一名普普通通的开发者,改变世界估计是办不到了,但可以让世界更 Geek 一些. 极客名片的诞生 如标题所说,表面上看这是一个名片, ...

最新文章

  1. UIScrollView offset in UINavigationController
  2. shell脚本调试技术
  3. 有生之年,人工智能会给世界带来什么变化?这里是现代机器人之父Rodney Brooks关于未来的预言
  4. 最小二乘法least square
  5. 使用logdashboard进行可视化的日志追踪
  6. 一个间歇性进程hang问题的处理
  7. 系统 应用 数据缺一不可 云优化三步走
  8. 2009年4月21日 博客更新公告,敬请关注!
  9. java中int和Integer对比的一些坑
  10. Keras 多层感知机 多类别的 softmax 分类模型代码
  11. Visual Assist X 10.8.2001 破解版 支持VC2013及以下版本
  12. RFC2544性能测试简介
  13. 铅酸电池充电C语言程序,铅酸电池如何充电_铅酸电池充电原理 - 全文
  14. 2012湘潭ICPC邀请赛感悟
  15. 免费的天气查询api接口调用
  16. onkeypress、onkeydown、onkeyup
  17. 数据库mysql表常见字段大小_常用的数据库的字段类型及大小
  18. 二:企业设立、经营与财务报表
  19. DM8 工具dmfldr使用
  20. 电机驱动芯片L298N和L293D区别

热门文章

  1. linux sudo命令错误 is not in the sudoers file
  2. zend studio自动添加文件注释和方法注释
  3. 多字节 unicode和utf-8的转换
  4. git 和 vim 学习笔记
  5. 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
  6. php过滤两个坐标,php判断两个坐标的方位角
  7. bo dto java vo_java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
  8. bose耳机信号断续_最便宜的TWS主动降噪耳机 233621 Zen 4400字深度评测
  9. tibco_TIBCO产品的微服务和DevOps
  10. mapreduce工作流程_详解MapReduce中的五大编程模型