使用sklearn.preprocessing.PolynomialFeatures来进行特征的构造。
它是使用多项式的方法来进行的,如果有a,b两个特征,
那么它的2次多项式为(1,a,b,a^2,ab, b^2)。
那么它的3次多项式为(1,a,b,a^2,ab, b^2, a^3, a^2b, b^2a, b^3)。
PolynomialFeatures有三个参数
degree:控制多项式的度
interaction_only: 默认为False,如果指定为True,那么就不会有特征自己和自己结合的项,上面的二次项中没有a^2 和 b^2 。
include_bias:默认为True。如果为True的话,那么就会有上面的1那一项。
\(X=\begin{bmatrix}1\\2\\3\\4\end{bmatrix}\)
poly = PolynomialFeatures(degree=2)
Y = ploy.fit_transform(X)
\(Y=\begin{bmatrix}1&1&1\\1&2&4\\1&3&9\\1&4&16\end{bmatrix}\)
当有两个特征时
\(X=\begin{bmatrix}1&5\\2&4\\3&3\\4&2\end{bmatrix}\)
\(Y=\begin{bmatrix}1&1&5&1&5&25\\1&2&4&4&8&16\\1&3&3&9&9&9\\1&4&2&16&8&4\end{bmatrix}\)