Logistic回归

适用因变量一般有1和0(是否)两种取值,表示取值为1的概率.

import pandas as pd
filename = '../data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix()  #读取自变量,并处理为pd的二维数组
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() #筛选出结果,默认阈值0.25,可以RLR(selection_threshold = 0.5)手动设置
print(u'通过随机筛选模型选取特征结束.')
print(rlr.get_support())
print(rlr.scores_)
# print(data.columns)
# print(x)
#print(u'有效特征为:s%' % ','.join(data.columns[rlr.get_support()]))
print(u'有效特征为:%s' % ','.join(data.iloc[:,:8].columns[rlr.get_support()]))  #有效特征为:工龄,地址,负债率,信用卡负债
x = data[data.iloc[:,:8].columns[rlr.get_support()]].as_matrix()   #筛选好特征

lr = LR()   #建立逻辑回归模型
lr.fit(x,y) #用筛选好的特征数据训练模型
print(u'逻辑回归模型训练结束.')
print(u'模型的平均正确率:%s' % lr.score(x,y))
通过随机筛选模型选取特征结束.
[False False  True  True False  True  True False]
[ 0.085  0.085  0.98   0.4    0.     0.995  0.545  0.03 ]
有效特征为:工龄,地址,负债率,信用卡负债
Index(['工龄', '地址', '负债率', '信用卡负债'], dtype='object')
逻辑回归模型训练结束.
模型的平均正确率:0.814285714286

Process finished with exit code 0

采用随机逻辑回归剔除自变量(剔除false),逻辑回归的本质还是一种线型模型,被筛选掉的变量不一定就跟结果没关系,可能存在非线型相关.

原文地址:https://www.cnblogs.com/hanshuai0921/p/9150624.html