sklearn.preprocessing.PolynomialFeatures

多项式生成函数: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)

设置interaction_only = True

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)








你可能感兴趣的:(sklearn)