数据挖掘建模之python进行Logistic回归分析
回归分析是通过建立模型来研究变量之间相互关系的密切程度、结构状态及进行模型预测的一种有效工具。按照研究方法划分,回归分析研究的范围大致如下:
本文简述几个主要的回归模型:
线性回归:
适用于因变量和自变量是线性关系,对自变量和因变量之间的线性关系进行建模,可以用最小二乘法求解模型系数
非线性回归:
适用于因变量和自变量不是线性关系,如果非线性关系可以通过简单的函数变换转化成线性关系,用线性回归的思想求解,如果不能转化,用非线性最小二乘法求解
Logistic回归:
因变量一般有1、0(是、否)两种求值,是广义线性回归模型的特例,利用Logistic函数将因变量的取值范围控制在0和1之间,表示取之为1的概率。
岭回归:
适用于参与建模的自变量之间具有多重共线性,是一种改进最小二乘法估计的方法。
主成分回归:
适用于参与建模的自变量之间具有多重共线性,主成分回归是根据主成分分析的思想提出来的,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性。
本文主要针对二分类Logistic回归进行代码展示:
利用Scikit-Learn对数据进行逻辑回归分析。
首先进行特征筛选,特征筛选方法有很多主要包含在Scikit-Learn的feature_selection库中,比较简单的有通过F检验来给出各个特征的F值和p值,从而可以筛选变量。
其次有递归特征消除和稳定性选择等比较新的方法。这里使用了稳定性选择方法中的随机逻辑回归进行特征筛选,然后利用筛选后的特征建立逻辑回归模型,输出平均正确率。
其代码如下:
#-*- coding: utf-8 -*-
import pandasas pd
filename ='path'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix()
y = data.iloc[:,8].as_matrix()
from sklearn.linear_modelimport LogisticRegressionas LR
from sklearn.linear_modelimport RandomizedLogisticRegressionas RLR
rlr = RLR()#建立随机逻辑回归模型,筛选变量
rlr.fit(x, y) #训练模型
rlr.get_support()#获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
print(u'')
print(u'%s' %','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix()#筛选好特征
lr = LR()#建立逻辑货柜模型
lr.fit(x, y)#用筛选后的特征数据来训练模型
print(u'逻辑回归模型训练结束')
print(u'模型的平均正确率为:%s' % lr.score(x, y))#给出模型的平均正确率。
逻辑回归本质上还是一种线性模型,因此这里的 模型有效性检验本质上还是在做线性相关检验,因此筛选出来的变量,说明和结果具有比较强的线性相关性。对于非线性关系的变量筛选方法还有决策树、神经网络等,接下来的文章会继续介绍。