特征的选择三个方法:
①方差选择法 ②相关系数法 ③递归特征消除法
核心模块函数:sklearn.feature_selection
定义:计算各特征方差,利用阈值,选择出方差大于阈值的特征。
from sklearn.feature_selection import VarianceThreshold
varianceThreshold = VarianceThreshold(threshold=1) #threshold = 1 阈值,低于该阀值的结果被删除
varianceThreshold.fit_transform(data[['累计票房', '豆瓣评分']]) #训练数据,低于阀值的将被丢弃
varianceThreshold.get_support() #返回每个字段bool值
定义:计算各个特征对目标值的相关系数,选择更加相关的特征
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
selectKBest = SelectKBest(f_regression, k=2) #f_regression k特征值数量
feature = data[['月份', '季度', '广告费用', '客流量']]
bestFeature = selectKBest.fit_transform(feature, data['销售额'])
selectKBest.get_support() #查看满足条件的列
定义:用一个基模型来进行多轮训练,训练后保留指定的特征数。
import pandas
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
data = pandas.read_csv('D:\\PDM\\6.2\\data2.csv')
feature = data[['月份', '季度', '广告费用', '客流量']]
rfe = RFE(
estimator=LinearRegression(), #基模型,LinerRegression 线性回归模型
n_features_to_select=2 #特征数
)
sFeature = rfe.fit_transform(feature, data['销售额'])
rfe.get_support() #查看满足条件的列
定义:把建好的模型对象传入选择器,然后它会根据这个已经建好的模型,自动帮我们选择最好的特征值。
from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import SelectFromModel
feature = data[['月份', '季度', '广告费用', '客流量']]
lrModel = LinearRegression() #建立线性回归模型
selectFromModel = SelectFromModel(lrModel)
selectFromModel.fit_transform(
feature,
data['销售额']
)