多項式特徵#
- 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=0
和min_degree=1
是等效的,因為次數為零的項的輸出由include_bias
決定。- interaction_onlybool,預設值 = False
如果為
True
,則僅產生交互特徵:也就是最多由degree
個不同的輸入特徵的乘積所組成的特徵,即排除相同輸入特徵的 2 次或更高次方的項。包含:
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'
順序計算速度較快,但可能會減慢後續估算器的速度。於 0.21 版本新增。
- 屬性:
另請參閱
樣條轉換器 (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
將轉換器擬合到X
和y
,並回傳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
設定
transform
和fit_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
。