Python数据挖掘—特征工程—特征选择

时间:2021-06-27 18:35:18

如何选择特征

根据是否发散及是否相关来选择

方差选择法

先计算各个特征的方差,根据阈值,选择方差大于阈值的特征

方差过滤使用到的是VarianceThreshold类,该类有个参数threshold,该值为最小方差的阈值,然后使用fit_transform进行特征值过滤

 

相关系数法

先计算各个特征对目标值的相关系数,选择更加相关的特征

 

递归特征消除法

使用一个基模型来进行多轮训练,经过多轮训练后,保留指定的特征数

通过estimator将基模型设置为线性模型(可以设置为其他类型),通过n_features_to_select=2将要选择的特征数设置为2

Python数据挖掘—特征工程—特征选择Python数据挖掘—特征工程—特征选择
 1 import pandas
 2 from sklearn.feature_selection import RFE
 3 from sklearn.linear_model import LinearRegression
 4 
 5 data=pandas.read_csv("C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程课件\\6.2\\data2.csv")
 6 
 7 feature=data[["月份","季度","广告费用","客流量"]]
 8 rfe=RFE(
 9     estimator=LinearRegression(),   #通过estimator将基模型设置为线性模型
10     n_features_to_select=2)   #要选择的特征数设置为2
View Code

将自变量和因变量通过fit_transfrom传入,并通过get_support()知道所用的哪两列的名字,得到对应列名

Python数据挖掘—特征工程—特征选择Python数据挖掘—特征工程—特征选择
1 sFeature=rfe.fit_transform(
2     feature,
3     data["销售额"])
4 
5 rfe.get_support()  #要知道这两列的名字
View Code

 

模型选择法

它是一种吧我们建好的模型对象传入选择器,然后它会根据这个已经建好的模型,自动帮我们选择最好的特征值。

首先导入数据,给出全部特征值,然后建立模型,作为参数传入SelctFromModel(),在通过fit_transfrom对特征值和因变量进行过滤,选出最优的特征,最后通过get_support()得到对应的列名。

Python数据挖掘—特征工程—特征选择Python数据挖掘—特征工程—特征选择
 1 import pandas
 2 from sklearn.linear_model import LinearRegression
 3 from sklearn.feature_selection import SelectFromModel
 4 
 5 data=pandas.read_csv("C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程课件\\6.2\\data2.csv")
 6 
 7 feature=data[["月份","季度","广告费用","客流量"]]
 8 
 9 lrModel=LinearRegression()
10 
11 selectFromModel=SelectFromModel(lrModel)
12 
13 selectFromModel.fit_transform(
14         feature,
15         data["销售额"])
16 
17 feature.columns[selectFromModel.get_support()]
View Code