分类算法系列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)也可以
在利用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)也可以
相关文章推荐
- 分类算法系列2----逻辑回归Logistic原理和Python实现
- 文本分类中的特征词选择算法系列科普(前言AND 一)
- 短文本/Query分类算法特征选择
- 分类算法之逻辑回归
- 逻辑回归和朴素贝叶斯算法实现二值分类(matlab代码)
- R语言使用逻辑回归分类算法
- 逻辑回归算法——解决分类问题
- 分类算法之二——特征提取与特征选择
- 分类-1-逻辑回归(Logistic regression)、感知学习算法(perceptron learning algorithm)、牛顿迭代法
- 短文本/Query分类算法特征选择
- 从文本分类问题中的特征词选择算法追踪如何将数学知识,数学理论迁移到实际工程中去
- Ng机器学习系列补充:2、分类和回归树算法CART
- 特征词选择算法对文本分类准确率的影响(前言)
- 【scikit-learn】07:数据加载,数据归一,特征选择,逻辑回归,贝叶斯,k近邻,决策树,SVM
- 特征词选择算法对文本分类准确率的影响(四)
- 文本分类入门-特征选择算法之开方检验
- 技术积累--常用的文本分类的特征选择算法
- 特征词选择算法对文本分类准确率的影响(二)
- 机器学习-分类算法-逻辑回归
- 文本分类入门:特征选择算法之开方检验、信息增益;特征选择与特征权重计算的区别