當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn SelectFromModel用法及代碼示例


本文簡要介紹python語言中 sklearn.feature_selection.SelectFromModel 的用法。

用法:

class sklearn.feature_selection.SelectFromModel(estimator, *, threshold=None, prefit=False, norm_order=1, max_features=None, importance_getter='auto')

Meta-transformer 用於根據重要性權重選擇特征。

在用戶指南中閱讀更多信息。

參數

estimator對象

構建轉換器的基本估計器。這既可以是擬合的(如果 prefit 設置為 True),也可以是未擬合的估計器。擬合後估計器應具有feature_importances_coef_ 屬性。否則,應使用importance_getter 參數。

thresholdstr 或浮點數,默認=無

用於特征選擇的閾值。保留重要性大於或相等的特征,而丟棄其他特征。如果“median” (resp. “mean”),那麽threshold 值是特征重要性的中值(resp. mean)。也可以使用比例因子(例如,“1.25*mean”)。如果 None 並且如果估計器將參數懲罰設置為 l1,無論是顯式還是隱式(例如 Lasso),使用的閾值是 1e-5。否則,默認使用“mean”。

prefit布爾,默認=假

預擬合模型是否應直接傳遞給構造函數。如果為 True,則必須直接調用 transform 並且 SelectFromModel 不能與 cross_val_scoreGridSearchCV 以及克隆估算器的類似實用程序一起使用。否則使用fit 訓練模型,然後使用transform 進行特征選擇。

norm_order非零 int、inf、-inf、默認=1

在估計器的coef_ 屬性為 2 維的情況下,用於過濾低於 threshold 的係數向量的範數階。

max_features整數,默認=無

要選擇的最大特征數。要僅基於 max_features 進行選擇,請設置 threshold=-np.inf

importance_getterstr 或可調用,默認='auto'

如果‘auto’,通過估計器的coef_屬性或feature_importances_屬性使用特征重要性。

還接受一個字符串,該字符串指定用於提取特征重要性的屬性名稱/路徑(使用 attrgetter 實現)。例如,在 TransformedTargetRegressor 的情況下給出 regressor_.coef_ 或在 Pipeline 的情況下給出 named_steps.clf.feature_importances_ ,最後一步命名為 clf

如果 callable ,覆蓋默認的特征重要性獲取器。可調用對象與擬合的估計器一起傳遞,它應該返回每個特征的重要性。

屬性

estimator_估計者

構建轉換器的基本估計器。僅當將未擬合的估計器傳遞給 SelectFromModel 時,即 prefit 為 False 時,才存儲此信息。

n_features_in_int

fit 期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

threshold_浮點數

用於特征選擇的閾值。

注意

如果基礎估計器也這樣做,則允許輸入中的 NaN/Inf。

例子

>>> from sklearn.feature_selection import SelectFromModel
>>> from sklearn.linear_model import LogisticRegression
>>> X = [[ 0.87, -1.34,  0.31 ],
...      [-2.79, -0.02, -0.85 ],
...      [-1.34, -0.48, -2.55 ],
...      [ 1.92,  1.48,  0.65 ]]
>>> y = [0, 1, 0, 1]
>>> selector = SelectFromModel(estimator=LogisticRegression()).fit(X, y)
>>> selector.estimator_.coef_
array([[-0.3252302 ,  0.83462377,  0.49750423]])
>>> selector.threshold_
0.55245...
>>> selector.get_support()
array([False,  True, False])
>>> selector.transform(X)
array([[-1.34],
       [-0.02],
       [-0.48],
       [ 1.48]])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.feature_selection.SelectFromModel。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。