SequentialFeatureSelector#
- class sklearn.feature_selection.SequentialFeatureSelector(estimator, *, n_features_to_select='auto', tol=None, direction='forward', scoring=None, cv=5, n_jobs=None)[原始碼]#
執行循序特徵選擇的轉換器。
此循序特徵選擇器會以貪婪的方式新增(前向選擇)或移除(後向選擇)特徵,以形成特徵子集。在每個階段,此估算器會根據估算器的交叉驗證分數,選擇最佳的特徵來新增或移除。在非監督式學習的情況下,此循序特徵選擇器只會查看特徵(X),而不看所需的輸出(y)。
請在使用者指南中閱讀更多內容。
於 0.24 版本新增。
- 參數:
- estimator估算器實例
一個未擬合的估算器。
- n_features_to_select“auto”、整數或浮點數,預設值為 “auto”
如果
"auto"
,則行為取決於tol
參數。如果
tol
不是None
,則當分數變化不超過tol
時,會選取特徵。否則,會選取一半的特徵。
如果為整數,則此參數是要選取的絕對特徵數量。如果為介於 0 和 1 之間的浮點數,則是要選取的特徵比例。
於 1.1 版本新增:
"auto"
選項於 1.1 版本新增。於 1.3 版本變更: 預設值在 1.3 版本中從
"warn"
變更為"auto"
。- tol浮點數,預設值為 None
如果分數在兩個連續的特徵新增或移除之間沒有至少增加
tol
,則停止新增或移除。當使用
direction="backward"
移除特徵時,tol
可以是負數。當進行前向選擇時,tol
必須為嚴格正數。以犧牲分數的微小降低為代價來減少特徵數量可能很有用。只有當
n_features_to_select
為"auto"
時,tol
才會啟用。於 1.1 版本新增。
- direction{‘forward’、‘backward’},預設值為 ‘forward’
是否執行前向選擇或後向選擇。
- scoring字串或可呼叫物件,預設值為 None
單一字串(請參閱 評分參數:定義模型評估規則)或可呼叫物件(請參閱 可呼叫的評分器)來評估測試集上的預測。
請注意,當使用自訂評分器時,它應傳回單一值。
如果為 None,則會使用估算器的 score 方法。
- cv整數、交叉驗證產生器或可迭代物件,預設值為 None
決定交叉驗證分割策略。cv 的可能輸入為
None,使用預設的 5 折交叉驗證,
整數,指定
(Stratified)KFold
中的折數,一個產生 (train, test) 分割(作為索引陣列)的可迭代物件。
對於整數/None 輸入,如果估算器是分類器,且
y
是二元或多類別,則會使用StratifiedKFold
。在所有其他情況下,會使用KFold
。這些分割器會以shuffle=False
進行實例化,因此分割在各個呼叫之間會保持相同。請參閱使用者指南,了解這裡可使用的各種交叉驗證策略。
- n_jobs整數,預設值為 None
要並行執行的工作數。當評估要新增或移除的新特徵時,交叉驗證程序會在各個折數之間並行執行。
None
表示 1,除非在joblib.parallel_backend
內容中。-1
表示使用所有處理器。請參閱詞彙表以取得更多詳細資訊。
- 屬性:
另請參閱
GenericUnivariateSelect
具有可設定策略的單變數特徵選擇器。
RFE
基於重要性權重的遞迴特徵消除。
RFECV
基於重要性權重的遞迴特徵消除,具有自動選擇特徵數量的功能。
SelectFromModel
基於重要性權重閾值的特徵選擇。
範例
>>> from sklearn.feature_selection import SequentialFeatureSelector >>> from sklearn.neighbors import KNeighborsClassifier >>> from sklearn.datasets import load_iris >>> X, y = load_iris(return_X_y=True) >>> knn = KNeighborsClassifier(n_neighbors=3) >>> sfs = SequentialFeatureSelector(knn, n_features_to_select=3) >>> sfs.fit(X, y) SequentialFeatureSelector(estimator=KNeighborsClassifier(n_neighbors=3), n_features_to_select=3) >>> sfs.get_support() array([ True, False, True, True]) >>> sfs.transform(X).shape (150, 3)
- fit(X, y=None, **params)[原始碼]#
從 X 中學習要選擇的特徵。
- 參數:
- X形狀如 (n_samples, n_features) 的類陣列 (array-like)
訓練向量,其中
n_samples
是樣本數量,而n_features
是預測變數的數量。- y形狀如 (n_samples,) 的類陣列 (array-like),預設值為 None
目標值。此參數在非監督式學習中可能會被忽略。
- **params字典 (dict),預設值為 None
要傳遞給底層
estimator
、cv
和scorer
物件的參數。1.6 版本新增: 僅在
enable_metadata_routing=True
時可用,可以使用sklearn.set_config(enable_metadata_routing=True)
設定。有關更多詳細資訊,請參閱 元數據路由使用者指南。
- 返回:
- self物件
返回實例本身。
- fit_transform(X, y=None, **fit_params)[原始碼]#
擬合數據,然後轉換它。
使用可選參數
fit_params
將轉換器擬合到X
和y
,並返回X
的轉換版本。- 參數:
- X形狀如 (n_samples, n_features) 的類陣列 (array-like)
輸入樣本。
- y形狀如 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like),預設值為 None
目標值(對於非監督式轉換為 None)。
- **fit_params字典 (dict)
額外的擬合參數。
- 返回:
- X_new形狀如 (n_samples, n_features_new) 的 ndarray 陣列
轉換後的陣列。
- get_feature_names_out(input_features=None)[原始碼]#
根據選取的特徵遮罩特徵名稱。
- 參數:
- input_features字串的類陣列 (array-like) 或 None,預設值為 None
輸入特徵。
如果
input_features
為None
,則會使用feature_names_in_
作為輸入特徵名稱。如果未定義feature_names_in_
,則會產生以下輸入特徵名稱:["x0", "x1", ..., "x(n_features_in_ - 1)"]
。如果
input_features
為類陣列 (array-like),則如果已定義feature_names_in_
,則input_features
必須符合feature_names_in_
。
- 返回:
- feature_names_out字串物件的 ndarray
轉換後的特徵名稱。
- get_metadata_routing()[原始碼]#
取得此物件的元數據路由。
請查看使用者指南,了解路由機制如何運作。
1.6 版本新增。
- 返回:
- routingMetadataRouter
一個封裝路由資訊的
MetadataRouter
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deep布林值 (bool),預設值為 True
如果為 True,將返回此估算器以及所包含的子物件(即估算器)的參數。
- 返回:
- params字典 (dict)
參數名稱對應到它們的值。
- get_support(indices=False)[原始碼]#
取得選取特徵的遮罩或整數索引。
- 參數:
- indices布林值 (bool),預設值為 False
如果為 True,則返回值將是一個整數陣列,而不是布林遮罩。
- 返回:
- support陣列
一個索引,用於從特徵向量中選取保留的特徵。如果
indices
為 False,則這是一個形狀為 [# 輸入特徵] 的布林陣列,其中元素為 True 若且唯若其對應的特徵被選取保留。如果indices
為 True,則這是一個形狀為 [# 輸出特徵] 的整數陣列,其值為輸入特徵向量中的索引。
- inverse_transform(X)[原始碼]#
反轉轉換操作。
- 參數:
- X形狀為 [n_samples, n_selected_features] 的陣列
輸入樣本。
- 返回:
- X_r形狀為 [n_samples, n_original_features] 的陣列
X
,其中已插入零值列,以表示在transform
中被移除的特徵。
- 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估算器實例
估算器實例。