数据源:bankloan.xls
模型结果
备注
# 逻辑回归本质上还是一种线性模型,模型有效性检验本质上还是做线性相关检验
# 因此筛选出来的变量,说明和结果具有比较强的线性相关性
# 而被筛选的变量并不一定就跟结果没有关系,因为它们之间有可能是非线性关系
# 使用了稳定性选择方法中的随机逻辑回归进行特征,然后利用筛选后的特征建立逻辑回归模型,输出平均平均正确率
# 递归特征消除的主要思想是反复的构建模型然后选出最好的或者最差的特征,把选出来的特征放到一边,然后在剩余的特征
# 上重复这个过程,知道遍历所有特征,这过程中特征被消除的次序就是特征的排序。
# 因此,这是一种寻找最优特征子集的贪心算法
# Scikit-Learn 提供RFE包,可以用户特征消除,还提供了RFECV,可以通过交叉验证来对特征进行排序
# 稳定特征是一种基于二次抽样和选择算法相结合较新的方法
# 选择算法可以使回归、SVM或者其他类似的方法
# 主要思想是在不同的数据子集和特征子集上运行特征算法,不断重复
源代码
filename = 'F:/python 数据挖掘分析实战/Data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix()
y = data.iloc[:,8].as_matrix()
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR() # 建立随机逻辑回归模型,筛选变量
rlr.fit(x, y) # 训练模型
rlr.get_support() # 获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
'''
利用Scikit-Learn 对这个数据进行逻辑回归分析,首先进行特征筛选,特征筛选的方法有很,主要包含在Scikit_Learn 的feature_selection 库中
比较简单的有通过F检验来给出各个特征的F值和P值,从而可以筛选变量(选择F值打的或者P值小的特征)。其次有递归特征消除和稳定性选择等比较新的方法
'''
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)) # 给出模型的平均正确率
参考资料:《Python数据分析与挖掘实战》