多项式生成函数:sklearn.preprocessing.PolynomialFeatures(degree=2, interaction_only=False, include_bias=True)
参数说明:
degree:多项式次数(就同几元几次方程中的次数一样)
interaction_only:是否包含单个自变量**n(n>1)特征数据标识
include_bias:是否包含偏差标识
下面一个二次多项式为例:
假设特征向量X=(x1,x2),则生成二次多项式为X=(1,x1,x2,x1**2,x1*x2,x2**2)特征向量
In [15]: import numpy as np
...: from sklearn.preprocessing import PolynomialFeatures
...: X = np.arange(6).reshape(3, 2)
...: ploy = PolynomialFeatures(degree = 2)
...: ploy.fit_transform(X)
...:
Out[15]:
array([[ 1., 0., 1., 0., 0., 1.],
[ 1., 2., 3., 4., 6., 9.],
[ 1., 4., 5., 16., 20., 25.]])
通过设置参数interaction_only = True,不包含单个自变量****n(n>1)特征数据
In [16]: ploy = PolynomialFeatures(degree = 2 , interaction_only = True)
...: ploy.fit_transform(X)
...:
Out[16]:
array([[ 1., 0., 1., 0.],
[ 1., 2., 3., 6.],
[ 1., 4., 5., 20.]])
通过设置参数include_bias= False,不包含偏差项数据
In [17]: ploy = PolynomialFeatures(degree = 2 , interaction_only = True,include
...: _bias= False)
...: ploy.fit_transform(X)
...:
Out[17]:
array([[ 0., 1., 0.],
[ 2., 3., 6.],
[ 4., 5., 20.]])
下面看看三次多项式又生成哪些项
In [18]: ploy = PolynomialFeatures(degree = 3)
...: ploy.fit_transform(X)
...:
Out[18]:
array([[ 1., 0., 1., 0., 0., 1., 0., 0., 0.,
1.],
[ 1., 2., 3., 4., 6., 9., 8., 12., 18.,
27.],
[ 1., 4., 5., 16., 20., 25., 64., 80., 100.,
125.]])
从上述结果可以看出:X =(1,x1,x2,x1**2,x1*x2,x2**2,x1**3,x1**2*x2,x2**3)
In [19]: ploy = PolynomialFeatures(degree = 3,interaction_only = True)
...: ploy.fit_transform(X)
...:
Out[19]:
array([[ 1., 0., 1., 0.],
[ 1., 2., 3., 6.],
[ 1., 4., 5., 20.]])
下面再看看三个特征的X,又是如何生成多项式
In [20]: X = np.arange(6).reshape(2, 3)
...: ploy = PolynomialFeatures(degree = 3)
...: ploy.fit_transform(X)
...:
Out[20]:
array([[ 1., 0., 1., 2., 0., 0., 0., 1., 2.,
4., 0., 0., 0., 0., 0., 0., 1., 2.,
4., 8.],
[ 1., 3., 4., 5., 9., 12., 15., 16., 20.,
25., 27., 36., 45., 48., 60., 75., 64., 80.,
100., 125.]])
X=(1,x1,x2,x3,x1**2,x1*x2,x1*x3,x2**2,x2*x3,x3**2,x1**3,x1**2*x2,x1**2*x3,x1*x2**2,x1*x2*x3,x1*x3**2,x2**3,x2**2*x3,x2*x3**2,x3**3)