美文网首页
【算法】python实现逻辑回归

【算法】python实现逻辑回归

作者: 猪猪奋斗记 | 来源:发表于2021-03-24 14:12 被阅读0次

预备资源

Python的几个包:

  • numpy: Python的语言扩展,定义了数字的数组和矩阵
  • pandas: 直接处理和操作数据的主要package
  • statsmodels: 统计和计量经济学的package,包含了用于参数评估和统计测试的实用工具
  • pylab: 用于生成统计图
    安装参考:传送门

实例

实验目标

通过分析不同的因素对研究生录取的影响来预测一个人是否会被录取。

数据

数据来源
数据的格式如下:

row_num admit gre gpa rank
0 0 380 3.61 3
1 1 660 3.67 3
  • admit :表示是否被录取(目标变量)
  • gre: 预测变量
  • gpa:预测变量
  • rank:母校排名(预测变量)

读取数据

通过pandas.read_csv("文件路径")读取数据

import pandas as pd
import statsmodels.api as sm
import pylab as pl
import numpy as np

df = pd.read_csv("./binary.csv")

print df.head()
# 重命名'rank'列,因为dataframe中有个方法名也为'rank'
df.columns = ["admit", "gre", "gpa", "prestige"]
print df.columns
# array([admit, gre, gpa, prestige], dtype=object)

结果:


结果

统计摘要绘图

pandas库提供函数describe来对数据进行统计,其中包括最值,均值,标准差等,计算标准差我们也可以用padans.dataframe.std()来求标准差,我们可以通过padans.dataframe.hist()来画柱状图,通过pylab.show来展示

print df.describe()

print df.std()

print pd.crosstab(df['admit'], df['prestige'], rownames=['admit'])

df.hist()
pl.show()
运行结果 柱形图

虚拟变量

虚拟变量,也叫哑变量,可用来表示分类变量、非数量因素可能产生的影响。在计量经济学模型,需要经常考虑属性因素的影响。例如,职业、文化程度、季节等属性因素往往很难直接度量它们的大小。只能给出它们的“Yes—D=1”或”No—D=0”,或者它们的程度或等级。为了反映属性因素和提高模型的精度,必须将属性因素“量化”。通过构造0-1型的人工变量来量化属性因素。

pandas提供一个一个分类变量的控制功能,我们可以通过get_dummies来对一列进行虚拟化。本例中将prestige虚拟化实现,以实现量化

#将prestige虚拟化实现,量化

dummy_ranks = pd.get_dummies(df['prestige'],prefix='prestige')

print dummy_ranks.head()

clos_to_keep=['admit','gre','gpa']
#合并虚拟项与原数据得到完成LR的dataframe
data = df[clos_to_keep].join(dummy_ranks.ix[:,'prestige_2':])

print data.head()

#自行添加逻辑回归需要的intercept变量(常数项)
data['intercept']=1.0
结果
将新的虚拟变量加入到原始的数据集中就不需要原来的prestige列了,生成m个虚拟变量只需要引入m-1个虚拟变量到数据集中,未引入的一个是作为基准对比的。将虚拟变量与"admit,gre,gpa"合并后就得到了实现逻辑的dataframe。除此之外。我们还需要显示的加上常数intercept

执行逻辑回归

在之前我们已经将准备工作做就绪,那么接下来就可以执行逻辑回归了。

  • 首先要指定预测变量的列和模型用于做预测的列。
  • 调用算法包执行算法。

在本例中预测admit,使用gre,gpa,以及虚拟变量p2,p3,p4做预测变量。

#指定作为训练变量的列,不含目标列‘admit’
train_cols=data.columns[1:]

#执行逻辑回归

logit = sm.Logit(data['admit'],data[train_cols])
#拟合参数
result = logit.fit()

statasmodels库中提供了许多的机器学习的算法,详情参见:传送门

使用模型进行预测

  1. 构造预测集,读入方式与训练集相同pandas.read_csv()读入,这里为了方便直接取了训练集(剔除admit列)。
  2. 通过result.predict("参数的值")进行预测
  3. 分析结果,求得命中率等相关值。
#拷贝训练集数据
combos = copy.deepcopy(data)

predict_cols = combos.columns[1:]
#设置参数的常量
combos['intercept']=1.0
#进行预测
combos['predict']=result.predict(combos[predict_cols])

tot = 0

hit = 0;

for value in combos.values:
    predict = value[-1]
    admit = int(value[0])
    if predict >=0.5:
        tot+=1
        if admit == 1:
            hit+=1
print 'Total: %d ,Hit: %d ,Precision: %.2f'%(tot,hit,100.0*hit/tot)

结果分析

通过result.summary()方法查看相关信息。

print result.summary()
结果

通过这个表我们可以看到模型的参数的值,以及总的拟合质量
查看每个参数的置信区间

# 查看每个系数的置信区间
print result.conf_int()
#                    0         1
# gre         0.000120  0.004409
# gpa         0.153684  1.454391
# prestige_2 -1.295751 -0.055135
# prestige_3 -2.016992 -0.663416
# prestige_4 -2.370399 -0.732529
# intercept  -6.224242 -1.755716

Summary

Python库中几乎包含了常见机器学习中我们需要做的所有操作,在训练机器学习模型的时候我们只用学会如何使用它就好。

相关文章

  • 2018-10-20

    Python与数据挖掘(二)——逻辑回归 2、算法实现 import pandas as pdfrom sklea...

  • 2018-10-19

    Python与数据挖掘(二)——逻辑回归 逻辑回归一般用来实现分类 一、算法原理 1、预测函数 2、将预测函数的输...

  • 【算法】python实现逻辑回归

    预备资源 Python的几个包: numpy: Python的语言扩展,定义了数字的数组和矩阵 pandas: 直...

  • 全面解析并实现逻辑回归(Python)

    本文以模型、学习目标、优化算法的角度解析逻辑回归(LR)模型,并以Python从头实现LR训练及预测。 一、逻辑回...

  • 从0开始实现逻辑回归算法(LogicRegression)

    从0开始实现逻辑回归算法(LogicRegression) 逻辑回归(LR)算法是一个比较常见的二元分类算法,通常...

  • 案例

    Python实现逻辑回归(Logistic Regression in Python)http://www.pow...

  • 机器学习之逻辑回归

    逻辑回归 场景简介:使用逻辑回归实现对鸢尾花的分类预测。基于python基本库的实现 模型说明 逻辑回归是一个分类...

  • (二十四)逻辑回归-python数据分析与机器学习实战(学习笔记

    文章原创,最近更新:2018-05-24 1.逻辑回归算法原理推导2.逻辑回归求解课程来源: python数据分...

  • ML03-逻辑回归(下部分)

    本文主题-逻辑回归(下部分):逻辑回归的应用背景逻辑回归的数学基础逻辑回归的模型与推导逻辑回归算法推导梯度下降算法...

  • ML02-逻辑回归(上部分)

    本文主题-逻辑回归(上部分):逻辑回归的应用背景逻辑回归的数学基础逻辑回归的模型与推导逻辑回归算法推导梯度下降算法...

网友评论

      本文标题:【算法】python实现逻辑回归

      本文链接:https://www.haomeiwen.com/subject/vrqhhltx.html