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


Python sklearn permutation_importance用法及代碼示例


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

用法:

sklearn.inspection.permutation_importance(estimator, X, y, *, scoring=None, n_repeats=5, n_jobs=None, random_state=None, sample_weight=None, max_samples=1.0)

特征評估的排列重要性[BRE]。

估計器必須是擬合估計器。 X 可以是用於訓練估計器的數據集或 hold-out 集。特征的排列重要性計算如下。首先,通過評分定義的基線指標在 X 定義的(可能不同的)數據集上進行評估。接下來,對驗證集中的特征列進行置換,並再次評估指標。排列重要性定義為基線度量與排列特征列的度量之間的差異。

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

參數

estimator對象

已安裝並與 scorer 兼容的估計器。

Xndarray 或 DataFrame,形狀(n_samples,n_features)

將計算排列重要性的數據。

y類似數組或無,形狀 (n_samples, ) 或 (n_samples, n_classes)

受監督的目標或無監督的None

scoringstr,可調用,列表,元組或字典,默認=無

使用的記分員。如果scoring 表示單個分數,則可以使用:

如果scoring代表多個分數,可以使用:

  • 唯一字符串的列表或元組;
  • 一個可調用的返回一個字典,其中鍵是指標名稱,值是指標分數;
  • 以度量名稱作為鍵和可調用值的字典。

將多個分數傳遞給scoring 比為每個分數調用permutation_importance 更有效,因為它重用預測以避免冗餘計算。

如果沒有,則使用估計器的默認記分器。

n_repeats整數,默認=5

置換特征的次數。

n_jobsint 或無,默認=無

並行運行的作業數。計算是通過計算每列的排列分數並在列上並行化來完成的。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

random_stateint,RandomState 實例,默認=無

偽隨機數生成器,用於控製每個特征的排列。傳遞 int 以獲得跨函數調用的可重現結果。請參閱詞匯表。

sample_weight形狀類似數組 (n_samples,),默認=None

評分中使用的樣本權重。

max_samplesint 或浮點數,默認=1.0

從 X 抽取的樣本數,用於計算每次重複中的特征重要性(無需替換)。

  • 如果是 int,則繪製 max_samples 樣本。
  • 如果浮點數,則繪製 max_samples * X.shape[0] 樣本。
  • 如果 max_samples 等於 1.0X.shape[0] ,則將使用所有樣本。

雖然使用此選項可能提供不太準確的重要性估計,但在評估大型數據集上的特征重要性時,它使該方法易於處理。結合 n_repeats ,這允許控製此方法的計算速度與統計精度的權衡。

返回

result Bunch 或此類實例的字典

類似字典的對象,具有以下屬性。

importances_meanndarray 形狀 (n_features, )

n_repeats 上的特征重要性平均值。

importances_stdndarray 形狀 (n_features, )

n_repeats 的標準偏差。

重要性ndarray 形狀(n_features,n_repeats)

原始排列重要性分數。

如果評分參數中有多個評分指標 result 是一個以評分者名稱作為鍵(例如 ‘roc_auc’)和 Bunch 對象作為值的字典。

參考

BRE

L. Breiman,“Random Forests”,機器學習,45(1),5-32,2001。https://doi.org/10.1023/A:1010933404324

例子

>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.inspection import permutation_importance
>>> X = [[1, 9, 9],[1, 9, 9],[1, 9, 9],
...      [0, 9, 9],[0, 9, 9],[0, 9, 9]]
>>> y = [1, 1, 1, 0, 0, 0]
>>> clf = LogisticRegression().fit(X, y)
>>> result = permutation_importance(clf, X, y, n_repeats=10,
...                                 random_state=0)
>>> result.importances_mean
array([0.4666..., 0.       , 0.       ])
>>> result.importances_std
array([0.2211..., 0.       , 0.       ])

相關用法


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