今天是读《python数据分析基础》的第19天,读书笔记内容为使用statsmodels进行逻辑回归。

以下代码将按数据清洗、训练模型、得出测试集的预测值这三个步骤展示

逻辑回归模型的使用。

#使用逻辑回归预测客户流失概率

import pandas as pd

import numpy as np

import statsmodels.api as sma

#导入数据

inputCsv='数据路径'

churn=pd.read_csv(inputCsv)

#数据预处理

#将列标题的空格替换为下划线,将引号和问号去除,标题字母变为小写

churn.columns=churn.columns.str.replace(' ','_').str.replace('\'','').str.strip('?').str.lower()

#将churn字段值中'.'删除,

churn.churn=churn.churn.str.strip('.')

#print(churn.head(5))

#新增一个字段,将churn字段转换为01编码字段

churn['churn01']=np.where(churn.churn=='True',1,0)

#对字段intl_plan及vmail_plan进行独热编码(新增虚拟变量)

intl_plan_dummy=pd.get_dummies(churn.intl_plan,prefix='intl_plan')

vmail_plan_dummy=pd.get_dummies(churn.vmail_plan,prefix='vmail_plan')

#添加常数项及生成自变量和因变量

churnInd=sma.add_constant(churn[churn.columns.difference(['intl_plan','vmail_plan','churn01','churn','state','phone','account_length','area_code'])].join(intl_plan_dummy.intl_plan_yes).join(vmail_plan_dummy.vmail_plan_yes))

churnDep=churn['churn01']

#将数据划分为训练集和测试集,训练集为第一行至倒数第10行,测试集为最后10行

churnIndTrain=churnInd.iloc[0:-10,:]

churnDepTrain=churnDep.iloc[0:-10]

churnIndTest=churnInd.tail(10)

#根据训练集训练获取模型参数

lr=sma.Logit(churnDepTrain,churnIndTrain)

result=lr.fit()

print(result.summary2())

#根据模型获取测试集结果

predictedValue=lr.fit().predict(churnIndTest)

compare=pd.DataFrame({'predictedValue':predictedValue,'actualValue':churnDep.tail(10)})

print(compare)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐