PolynomialFeatures#

class sklearn.preprocessing.PolynomialFeatures(degree=2, *, interaction_only=False, include_bias=True, order='C')#

生成多项式和交互特征。

生成一个新的特征矩阵,该矩阵由所有特征的多项式组合组成,其度数小于或等于指定的度数。例如,如果输入样本是二维的并且形式为 [a, b],则度数为2的多项式特征是[1, a, b, a^2, ab, b^2]。

更多信息请参阅 用户指南

Parameters:
degreeint 或 tuple (min_degree, max_degree), 默认=2

如果给定一个单一的int,它指定多项式特征的最大度数。如果传递一个元组 (min_degree, max_degree) , 则 min_degree 是最小度数, max_degree 是生成的特征的最大多项式度数。请注意, min_degree=0min_degree=1 是等效的,因为输出零次项由 include_bias 决定。

interaction_onlybool, 默认=False

如果为 True ,则仅生成交互特征:特征是至多 degree不同 输入特征的乘积,即排除 相同输入特征的二次或更高次幂的项:

  • 包含:x[0] , x[1] , x[0] * x[1] , 等等。

  • 排除:x[0] ** 2 , x[0] ** 2 * x[1] , 等等。

include_biasbool, 默认=True

如果为 True (默认),则包含一个偏置列,该特征中所有多项式幂均为零(即一列全为1 - 在 线性模型中充当截距项)。

order{‘C’, ‘F’}, 默认=’C’

在密集情况下输出数组的有序性。 'F' 顺序计算速度更快,但可能会减慢后续估计器的速度。

Added in version 0.21.

Attributes:
powers_ndarray of shape ( n_output_features_ , n_features_in_ )

指数,用于输出中每个输入的值。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

n_output_features_int

多项式输出特征的总数。输出特征的数量是通过迭代所有合适大小的输入特征组合来计算的。

See also

SplineTransformer

生成单变量B样条基的转换器。

Notes

请注意,输出数组中的特征数量在输入数组的特征数量中是多项式增长的,并且在度数中是指数增长的。高次可能导致过拟合。

参见 examples/linear_model/plot_polynomial_interpolation.py

Examples

>>> 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.]])
>>> poly = PolynomialFeatures(interaction_only=True)
>>> poly.fit_transform(X)
array([[ 1.,  0.,  1.,  0.],
       [ 1.,  2.,  3.,  6.],
       [ 1.,  4.,  5., 20.]])
fit(X, y=None)#

计算输出特征的数量。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

数据。

y忽略

未使用,为了保持API一致性而存在。

Returns:
selfobject

拟合的转换器。

fit_transform(X, y=None, **fit_params)#

拟合数据,然后进行转换。

将转换器拟合到 Xy ,并带有可选参数 fit_params , 并返回 X 的转换版本。

Parameters:
X形状为 (n_samples, n_features) 的类数组

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组, 默认=None

目标值(无监督转换为 None)。

**fit_paramsdict

其他拟合参数。

Returns:
X_new形状为 (n_samples, n_features_new) 的 ndarray 数组

转换后的数组。

get_feature_names_out(input_features=None)#

获取变换后的输出特征名称。

Parameters:
input_features字符串数组或None, 默认=None

输入特征。

  • 如果 input_features is None ,则使用 feature_names_in_ 作为输入特征名称。如果 feature_names_in_ 未定义,则生成以下输入特征名称: ["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是数组类型,则 input_features 必须与 feature_names_in_ 匹配,如果 feature_names_in_ 已定义。

Returns:
feature_names_out字符串对象的ndarray

变换后的特征名称。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

property powers_#

指数,用于输出中每个输入的值。

set_output(*, transform=None)#

设置输出容器。

请参阅 介绍 set_output API 以了解如何使用API的示例。

Parameters:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_transform 的输出。

  • "default" : 转换器的默认输出格式

  • "pandas" : DataFrame 输出

  • "polars" : Polars 输出

  • None : 转换配置不变

Added in version 1.4: "polars" 选项已添加。

Returns:
self估计器实例

估计器实例。

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

transform(X)#

转换数据为多项式特征。

Parameters:
X{array-like, sparse matrix} 形状为 (n_samples, n_features)

要转换的数据,逐行进行。

对于稀疏输入,首选CSR而非CSC(为了速度),但如果度数为4或更高,则需要CSC。如果度数小于4且输入格式为CSC,它将被转换为CSR,生成其多项式特征,然后转换回CSC。

如果度数为2或3,将使用Andrew Nystrom和John Hughes在”利用稀疏性加速CSR矩阵的多项式特征扩展使用K-Simplex数”中描述的方法,这比在CSC输入上使用的方法快得多。因此,CSC输入将被转换为CSR,输出将在返回之前转换回CSC,因此首选CSR。

Returns:
XP{ndarray, sparse matrix} 形状为 (n_samples, NP)

特征矩阵,其中 NP 是从输入组合生成的多项式特征的数量。如果提供稀疏矩阵,它将被转换为稀疏的 csr_matrix