python做logistic回归_用Python做Logistic回归
为什么写这篇文章
本人初学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回归相关推荐
- python大数据免费_用python做大数据
不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...
- python怎么做软件程序_看 Python 超级程序员使用什么开发工具
Python超级程序员使用的开发工具 我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发 ...
- 用python做自我介绍_用python做个自我介绍(python入门教程)_逻辑教育
原标题:用python做个自我介绍(python入门教程)_逻辑教育 本文涉及的python基础语法为:数据类型等 数字类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里 ...
- python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖
最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...
- 编程游戏python我的世界_乐学Python编程-做个游戏很简单
1.进入Python 编程世界/ 2 1.1 启动Python 编程环境/ 5 1.2 Python 之禅/ 9 1.3 送你几朵玫瑰花--运行Python 程序/ 16 1.4 Python 的由来 ...
- python做股票分析_利用Python进行股票投资组合分析(调试)
pythonsp500-robo-advisor-edition Python for Financial Analyses 需要的镜像文件和数据--Robo Advisor edition. 小结 ...
- 用python自动办公 百度_用Python自动办公,做职场高手,16章完整版百度云盘
01.文件 [12.20更新课程代码]用Python自动办公做职场高手.rar [课程代码]从零写Python练手项目:实用脚本.zip [课程代码]四周实现爬虫网站.zip [课程代码]用NumPy ...
- 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...
python项目练习一:即时标记 这是<python基础教程>后面的实践,照着写写,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能 ...
- python名片制作代码_教你做一张能运行 Python 的名片,成本只要20元!
原标题:教你做一张能运行 Python 的名片,成本只要20元! 作为一名普普通通的开发者,改变世界估计是办不到了,但可以让世界更 Geek 一些. 极客名片的诞生 如标题所说,表面上看这是一个名片, ...
最新文章
- UIScrollView offset in UINavigationController
- shell脚本调试技术
- 有生之年,人工智能会给世界带来什么变化?这里是现代机器人之父Rodney Brooks关于未来的预言
- 最小二乘法least square
- 使用logdashboard进行可视化的日志追踪
- 一个间歇性进程hang问题的处理
- 系统 应用 数据缺一不可 云优化三步走
- 2009年4月21日 博客更新公告,敬请关注!
- java中int和Integer对比的一些坑
- Keras 多层感知机 多类别的 softmax 分类模型代码
- Visual Assist X 10.8.2001 破解版 支持VC2013及以下版本
- RFC2544性能测试简介
- 铅酸电池充电C语言程序,铅酸电池如何充电_铅酸电池充电原理 - 全文
- 2012湘潭ICPC邀请赛感悟
- 免费的天气查询api接口调用
- onkeypress、onkeydown、onkeyup
- 数据库mysql表常见字段大小_常用的数据库的字段类型及大小
- 二:企业设立、经营与财务报表
- DM8 工具dmfldr使用
- 电机驱动芯片L298N和L293D区别
热门文章
- linux sudo命令错误 is not in the sudoers file
- zend studio自动添加文件注释和方法注释
- 多字节 unicode和utf-8的转换
- git 和 vim 学习笔记
- 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
- php过滤两个坐标,php判断两个坐标的方位角
- bo dto java vo_java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
- bose耳机信号断续_最便宜的TWS主动降噪耳机 233621 Zen 4400字深度评测
- tibco_TIBCO产品的微服务和DevOps
- mapreduce工作流程_详解MapReduce中的五大编程模型