学习笔记,,备忘录。。。
内容来源:知乎:特征工程到底是什么?
- 实际应用中的数据往往很多,并存在不相关的特性,特性之间也可能存在相互依赖。
- 通过特征选择剔除不相关或冗余的特征,减少特征个数,减少运行时间的目的。
- 数据预处理后,需要选择有意义的特征,然后再输入机器学习的算法和模型进行训练。
一、相关系数法
- 计算各个特征对目标值的相关系数,选择更加相关的特征。
原始数据:
步骤说明:
- 导入数据
- 使用SelectKBest类,通过回归的方法,确定选择几个特征值
- 选择自变量,调用fit_transform()方法
- 把自变量和因变量传入,选择相关度比较高的两个变量
- 通过get_support()方法获得相应的列名
示例代码:

二、递归特征消除法
使用基模型进行多轮训练,指定需要的特征数。
原始数据:
步骤说明:导入数据
- 使用RFE类,选择线性回归模型LinearRegression作为基模型
- 确定选择的特征数
- 调用fit_transform()方法,把自变量和因变量传入
- 通过get_support()方法获得相应的列名
RFE(estimator=LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False),
n_features_to_select=2, step=1, verbose=0)
示例代码:
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
feature=data[['月份','季度','广告推广费','注册并投资人数']]
rfe=RFE(estimator=LinearRegression(),n_features_to_select=2)
sFeature=rfe.fit_transform(feature,data['销售金额'])
rfe.get_support()
feature.columns[rfe.get_support()]

三、模型选择法
- 它将建好的模型对象传入选择器,根据这个已经建好的模型,自动选择最好的特征值。
sklearn.feature_selection.SelectFromModel(estimator, threshold=None, prefit=False)
import pandas as pd
data=pd.read_csv('./test.csv',sep=' ',encoding='gbk')
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LinearRegression
feature=data[['月份','季度','广告推广费','注册并投资人数']]
selectFromModel=SelectFromModel(LinearRegression())
#不需要指定特征数,自动选择最优的特征数
selectFromModel=selectFromModel.fit_transform(feature,data['销售金额'])
print('原始数据共有%s个特征'%feature.shape[1])
print('新数据共有%s个特征'%selectFromModel.shape[1])
输出结果:
原始数据共有4个特征
新数据共有1个特征
1245



被折叠的 条评论
为什么被折叠?



