解释下特征构建、特征抽取和特征选择:
1、当数据拿到手里后,首先需要从现有数据中挑选或将现有数据进行变形,组合形成新特征,此过程称为特征构建。
2、当特征维度比较高,通过映射或变化的方式,用低维空间样本来表示样本,称为特征抽取。
3、从一组特征中挑选出一些最有效的特征,以达到降低维度和降低过拟合风险的目的,称为特征选择。
机器学习,一些比赛竞赛中,通常会给一定的特征数据进行分类或者回归预测。有时需要构建更多的特征,然后对特征再进行特征选择。通过增加一些输入数据的非线性特征来增加模型的复杂度通常是有效的。一个简单通用的办法是使用多项式特征,这可以获得特征的更高维度和互相间关系的项。这在 PolynomialFeatures 中实现:
>>> import numpy as np
>>> from sklearn.preprocessing import PolynomialFeatures
>>> X = np.arange(6).reshape(3, 2)
>>> X
array([[0, 1],
[2, 3],
[4, 5]])
>>> poly = PolynomialFeatures(2)
>>> poly.fit_transform(X)
array([[ 1., 0., 1., 0., 0., 1.],
[ 1., 2., 3., 4., 6., 9.],
[ 1., 4., 5., 16., 20., 25.]])
在一些情况下,只需要特征间的交互项,这可以通过设置 interaction_only=True 来得到:
>>> X = np.arange(9).reshape(3, 3)
>>> X
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> poly = PolynomialFeatures(degree=3, interaction_only=True)
>>> poly.fit_transform(X)
array([[ 1., 0., 1., 2., 0., 0., 2., 0.],
[ 1., 3., 4., 5., 12., 15., 20., 60.],
[ 1., 6., 7., 8., 42., 48., 56., 336.]])
X的特征已经从(X_1,X_2,X_3)转为(1,X_1,X_2,X_3,X_1X_2,X_1X_3,X_2X_3,X_1X_2X_3)
参考:https://blog.csdn.net/AuGuSt_81/article/details/79167563