今天是读《python数据分析基础》的第19天,读书笔记内容为使用statsmodels进行逻辑回归。
以下代码将按数据清洗、训练模型、得出测试集的预测值这三个步骤展示
逻辑回归模型的使用。
注:
1.数据来源于https://github.com/cbrownley/foundations-for-analytics-with-python/tree/master/statistics/churn.csv
2.使用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)
网友评论