如何选择特征
根据是否发散及是否相关来选择
方差选择法
先计算各个特征的方差,根据阈值,选择方差大于阈值的特征
方差过滤使用到的是VarianceThreshold类,该类有个参数threshold,该值为最小方差的阈值,然后使用fit_transform进行特征值过滤
相关系数法
先计算各个特征对目标值的相关系数,选择更加相关的特征
递归特征消除法
使用一个基模型来进行多轮训练,经过多轮训练后,保留指定的特征数
通过estimator将基模型设置为线性模型(可以设置为其他类型),通过n_features_to_select=2将要选择的特征数设置为2
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
将自变量和因变量通过fit_transfrom传入,并通过get_support()知道所用的哪两列的名字,得到对应列名
1 sFeature=rfe.fit_transform( 2 feature, 3 data["销售额"]) 4 5 rfe.get_support() #要知道这两列的名字
模型选择法
它是一种吧我们建好的模型对象传入选择器,然后它会根据这个已经建好的模型,自动帮我们选择最好的特征值。
首先导入数据,给出全部特征值,然后建立模型,作为参数传入SelctFromModel(),在通过fit_transfrom对特征值和因变量进行过滤,选出最优的特征,最后通过get_support()得到对应的列名。
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()]