python数据分析——逻辑回归

参考资料:活用pandas库

逻辑回归

        当响应变量为二值响应变量时,经常使用逻辑回归对数据建模。

# 导入pandas库
import pandas as pd
# 导入数据集
acs=pd.read_csv(r"...\data\acs_ny.csv")
# 展示数据列
print(acs.columns)
# 展示数据集
print(acs.head())

acs['ge150k']=pd.cut(acs['FamilyIncome'],
                     [0,150000,acs['FamilyIncome'].max()],labels=[0,1])
acs['ge150k_i']=acs['ge150k'].astype(int)
print(acs['ge150k_i'].value_counts())
print(acs.info())

(1)使用statsmodels

        可以使用logit函数执行逻辑回归。解释逻辑回归的结果并不像解释线性回归那样简单。在逻辑回归中,与所有广义线性模型一样,都需要使用连接函数执行一定的转换,而解释结果时需要回到转换之前的状态。

# 导入formula.api模块
import statsmodels.formula.api as smf
# 逻辑回归拟合
model=smf.logit("ge150k_i~HouseCosts+ NumWorkers+ "\
                "OwnRent+ NumBedrooms+ FamilyType"
                ,data=acs)
results=model.fit()
print(results.summary())

# 导入numpy库
import numpy as np

# 为了解释逻辑模型,首先需要把结果指数化
odds_ratios=np.exp(results.params)
print(odds_ratios)

        对于这些数字的解释:NumBedrooms每增加一个单元,FamilyIncome超过150000的概率就会增加1.27倍。也可以如此解释分类变量。

(2)使用sklearn

        使用sklearn时,需要手动创建虚拟变量。

# 用get_dummies函数对分类变量创建虚拟变量
predictors=pd.get_dummies(
    acs[['HouseCosts','NumWorkers','OwnRent','NumBedrooms','FamilyType']],
    drop_first=True)
# 导入linear_model模块
from sklearn import linear_model
# 逻辑回归拟合
lm=linear_model.LogisticRegression()
results=lm.fit(X=predictors,y=acs['ge150k_i'])
# 查看系数
print(results.coef_)
print(results.intercept_)
# 调整系数的输出格式
values=np.append(results.intercept_,results.coef_)
names=np.append("intercept",predictors.columns)
results=pd.DataFrame(values,index=names,columns=['coef'])
print(results)
# 为了解释系数,还需要把值指数化
results['or']=np.exp(results['coef'])
print(results)
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值