代码:
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 15 17:48:35 2017
@author: Administrator
###逻辑回归建模###
"""
import pandas as pd
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
#参数初始化
filename = 'D:/PythonSpace/Python Practice of Data Analysis and Mining/data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix()
y = data.iloc[:,8].as_matrix()
#建立随机逻辑回归模型,筛选变量
rlr = RLR()
#训练模型
rlr.fit(x,y)
#获取特征选择结果
rlr.get_support()
#通过.score方法获取各个特征的分数
print(u'特征:%s' % ' '.join(data.columns[:,:8]))
print (u'对应特征分数:%s' % rlr.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))
结果显示:
特征:年龄 教育 工龄 地址 收入 负债率 信用卡负债 其他负债
对应特征分数:[ 0.1 0.105 0.995 0.44 0. 1. 0.54 0.035]
通过随机逻辑回归模型特征选择结束。
有效特征为:工龄,地址,负债率,信用卡负债
逻辑回归模型训练结束
模型的平均正确率为:0.814285714286
分析:
1.筛选变量(降维):随机逻辑回归、随机Lasso(线性模型)
决策树、神经网络(非线性模型)
2.建立随机逻辑回归模型时,使用默认阈值0.25选择特征,可用RLR(selection_threshold=0.5)手动设置阈值