您的位置:首页 > 其它

分类算法系列2----逻辑回归特征选择

2017-04-24 22:35 399 查看
备注:以下均参考Python数据分析和数据挖掘实战

在利用Scikit-Learn对数据进行逻辑回归之前。首先进行特征筛选。特征筛选的方法很多,主要包含在Scikit-Learn的

feature-selection库中,比较简单的有通过F检验(f_regression)来给出各个特征的F值个P值,从而可以筛选变量(选在

F值达回执P值小的特征)。一下为利用稳定性选择方法中的随机逻辑回归进行特征筛选,然后利用筛选后的特征建立逻辑

回归模型,输出平均正确率

数据为商品的一些销售信息,通过商品的销售信息,判断商品的好坏

代码清单如下

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

import pandas as pd

from sklearn.linear_model import  LogisticRegression  as LR

from sklearn.linear_model import RandomizedLogisticRegression as RLR

data=pd.read_excel('categ_lvl3.xlsx')

select_var=~data.columns.isin(["CATEG_LVL3_ID","CATEG_LVL3_NAME","CATEG_LVL1_ID","FLAG","PROB","FLAG_PRE"])

pre_test=data.ix[:,select_var]

#print pre_test.shape,data.shape

pre_X = data.ix[:, select_var]

pre_Y=data.FLAG.values

rlr=RLR()

rlr=rlr.fit(pre_X,pre_Y)

#print rlr.get_support()

#print rlr.scores_

print '保留特征如下'

print (pre_X.columns[rlr.get_support()])

x=pre_X[pre_X.columns[rlr.get_support()]].as_matrix()#筛选好特征

lr=LR()

lr.fit(x,pre_Y)

print '逻辑回归模型结束:%s' % lr.score(x,pre_Y)#%s 和 % d" %s是字符串对应的格式通配符,%d是数值整型对应的格式通配符

lr1=lr.fit(pre_X,pre_Y)

print ('未做变量筛选时模型的准确率:%s' % lr.score(pre_X,pre_Y))

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

>>> runfile('D:/Python/test_lr.py', wdir='D:/Python')

保留特征如下

Index([    u'订单数',      u'商品数',     u'顾客数',

       u'老客数',       u'流量',       u'缺货天数'],

      dtype='object')

逻辑回归模型结束:0.927355278093

未做变量筛选时模型的准确率:0.862656072645

从上面的结果可以看出,采用采用随机逻辑回归剔除变量,仅保留  u'SKU_NUM',     u'ORDR_NUM',   u'CUST_NUM', u'OLD_CUST_NUM',       u'DETL_UV',

  u'CMPLNT_TIMES'这几个变量,准确率明显高于未做变量筛选时的准确率,备注读者可以手动设置RLR阈值(selection_threshold=0.5)

或者使用lasso和F(f_regression)也可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息