多項式特徵#

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]。

使用者指南中閱讀更多內容。

參數:
degreeint 或 tuple (min_degree, max_degree),預設值=2

如果給定一個單一 int,則它指定多項式特徵的最大次數。如果傳遞一個 tuple (min_degree, max_degree),則 min_degree 是最小次數,而 max_degree 是產生特徵的最大多項式次數。請注意,min_degree=0min_degree=1 是等效的,因為次數為零的項的輸出由 include_bias 決定。

interaction_onlybool,預設值 = False

如果為 True,則僅產生交互特徵:也就是最多由 degree不同的輸入特徵的乘積所組成的特徵,即排除相同輸入特徵的 2 次或更高次方的項。

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

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

include_biasbool,預設值 = True

如果為 True (預設值),則包含一個偏差列,此特徵中所有的多項式次方都為零 (即一列 1 - 在線性模型中作為截距項)。

order{‘C’, ‘F’},預設值 = ‘C’

在密集情況下,輸出陣列的順序。'F' 順序計算速度較快,但可能會減慢後續估算器的速度。

於 0.21 版本新增。

屬性:
powers_形狀為 (n_output_features_, n_features_in_) 的 ndarray

輸出中每個輸入的指數。

n_features_in_int

fit 期間看到的特徵數量。

於 0.24 版本新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有所有字串的特徵名稱時才定義。

於 1.0 版本新增。

n_output_features_int

多項式輸出特徵的總數。輸出特徵的數量是透過迭代所有適當大小的輸入特徵組合來計算的。

另請參閱

樣條轉換器 (SplineTransformer)

為特徵產生單變量 B 樣條基底的轉換器。

注意

請注意,輸出陣列中的特徵數量會以輸入陣列的特徵數量多項式縮放,並以次數指數縮放。高次數可能會導致過度擬合。

請參閱 examples/linear_model/plot_polynomial_interpolation.py

範例

>>> 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)[原始碼]#

計算輸出特徵的數量。

參數:
X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣

資料。

y忽略

不使用,此處為依慣例與 API 一致性而存在。

回傳值:
self物件

擬合的轉換器。

fit_transform(X, y=None, **fit_params)[原始碼]#

擬合資料,然後轉換它。

使用可選參數 fit_params 將轉換器擬合到 Xy,並回傳 X 的轉換版本。

參數:
X形狀為 (n_samples, n_features) 的類陣列

輸入樣本。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值 = None

目標值 (對於無監督轉換為 None)。

**fit_paramsdict

額外的擬合參數。

回傳值:
X_new形狀為 (n_samples, n_features_new) 的 ndarray 陣列

轉換後的陣列。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

參數:
input_features字串類型的類陣列或 None,預設值 = None

輸入特徵。

  • 如果 input_features is None,則使用 feature_names_in_ 作為輸入特徵名稱。如果未定義 feature_names_in_,則會產生以下輸入特徵名稱:["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是類陣列,則如果已定義 feature_names_in_input_features 必須與 feature_names_in_ 相符。

回傳值:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看使用者指南以了解路由機制的運作方式。

回傳值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值為 True

若為 True,將會回傳此估算器以及包含的子物件(也是估算器)的參數。

回傳值:
paramsdict

參數名稱對應到它們的值。

property powers_#

輸出中每個輸入的指數。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱介紹 set_output API,以了解如何使用此 API 的範例。

參數:
transform{“default”, “pandas”, “polars”},預設值為 None

設定 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

1.4 版新增: 新增了 "polars" 選項。

回傳值:
self估算器實例

估算器實例。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估算器參數。

回傳值:
self估算器實例

估算器實例。

transform(X)[原始碼]#

將資料轉換為多項式特徵。

參數:
X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣

要轉換的資料,逐行處理。

對於稀疏輸入,優先選擇 CSR 而非 CSC(為了速度),但如果次數為 4 或更高,則需要 CSC。如果次數小於 4 且輸入格式為 CSC,則會將其轉換為 CSR,生成其多項式特徵,然後轉換回 CSC。

如果次數為 2 或 3,則使用 Andrew Nystrom 和 John Hughes 在「Leveraging Sparsity to Speed Up Polynomial Feature Expansions of CSR Matrices Using K-Simplex Numbers」中描述的方法,該方法比用於 CSC 輸入的方法快得多。因此,CSC 輸入將轉換為 CSR,並且輸出將在回傳之前轉換回 CSC,因此優先選擇 CSR。

回傳值:
XP形狀為 (n_samples, NP) 的 {ndarray, 稀疏矩陣}

特徵矩陣,其中 NP 是從輸入組合生成的多項式特徵的數量。如果提供了稀疏矩陣,它將被轉換為稀疏的 csr_matrix