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


Python sklearn IterativeImputer用法及代碼示例


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

用法:

class sklearn.impute.IterativeImputer(estimator=None, *, missing_values=nan, sample_posterior=False, max_iter=10, tol=0.001, n_nearest_features=None, initial_strategy='mean', imputation_order='ascending', skip_complete=False, min_value=- inf, max_value=inf, verbose=0, random_state=None, add_indicator=False)

多元估算器,從所有其他特征中估計每個特征。

一種通過以round-robin 方式將具有缺失值的每個特征建模為其他特征的函數來估算缺失值的策略。

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

注意

這個估計器仍然實驗目前:預測和 API 可能會在沒有任何棄用周期的情況下發生變化。要使用它,您需要顯式導入enable_iterative_imputer

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_iterative_imputer  # noqa
>>> # now you can import normally from sklearn.impute
>>> from sklearn.impute import IterativeImputer

參數

estimator估計器對象,默認=BayesianRidge()

在round-robin 插補的每個步驟中使用的估計器。如果 sample_posterior=True ,估計器必須在其 predict 方法中支持 return_std

missing_valuesint 或 np.nan,默認=np.nan

缺失值的占位符。所有出現的missing_values 都將被估算。對於帶有缺失值的可空整數 dtype 的 pandas 數據幀,應將 missing_values 設置為 np.nan ,因為 pd.NA 將轉換為 np.nan

sample_posterior布爾,默認=假

是否從每個插補的擬合估計量的(高斯)預測後驗中采樣。如果設置為 True ,估計器必須在其 predict 方法中支持 return_std。如果使用IterativeImputer 進行多重插補,則設置為True

max_iter整數,默認=10

在返回最後一輪計算的插補之前要執行的最大插補輪數。一輪是具有缺失值的每個特征的單一插補。停止條件滿足一次 max(abs(X_t - X_{t-1}))/max(abs(X[known_vals])) < tol ,其中 X_t 在迭代 t 時為 X。請注意,僅在 sample_posterior=False 時才應用提前停止。

tol浮點數,默認=1e-3

停止條件的容差。

n_nearest_features整數,默認=無

用於估計每個特征列的缺失值的其他特征的數量。使用每個特征對之間的絕對相關係數(初始插補後)來測量特征之間的接近度。為了確保在整個插補過程中覆蓋特征,相鄰特征不一定是最近的,而是以與每個插補目標特征的相關性成比例的概率繪製。當特征數量巨大時可以提供顯著的加速。如果是 None ,則將使用所有函數。

initial_strategy{‘mean’, ‘median’,‘most_frequent’, ‘constant’},默認='平均'

使用哪種策略來初始化缺失值。與 SimpleImputer 中的 strategy 參數相同。

imputation_order{‘ascending’, ‘descending’, ‘roman’, ‘arabic’, ‘random’},默認='升序'

特征將被估算的順序。可能的值:

  • 'ascending':從缺失值最少到最多的特征。
  • 'descending':從缺失值最多到最少的特征。
  • 'roman':從左到右。
  • 'arabic':從右到左。
  • 'random':每輪隨機順序。
skip_complete布爾,默認=假

如果True,則在transform期間有缺失值的特征,而在fit期間沒有任何缺失值的特征將僅使用初始插補方法進行插補。如果您有許多特征在 fittransform 時間都沒有缺失值,則設置為 True 以節省計算。

min_value形狀為浮點數或類似數組 (n_features,),默認=-np.inf

最小可能的估算值。如果是標量,則廣播到形狀(n_features,)。如果類似於數組,則需要形狀 (n_features,) ,每個特征有一個最小值。默認為 -np.inf

max_value形狀為浮點數或類似數組 (n_features,),默認=np.inf

最大可能的估算值。如果是標量,則廣播到形狀(n_features,)。如果類似於數組,則需要形狀 (n_features,) ,每個特征都有一個最大值。默認為 np.inf

verbose整數,默認=0

詳細程度標誌,控製在評估函數時發出的調試消息。越高,越詳細。可以是 0、1 或 2。

random_stateint、RandomState 實例或無,默認=無

要使用的偽隨機數生成器的種子。如果 n_nearest_features 不是 None ,則隨機選擇估計器特征,如果 random 則隨機選擇 imputation_order ,如果 sample_posterior=True 則從後驗抽樣。使用整數進行確定性。請參閱詞匯表。

add_indicator布爾,默認=假

如果 True ,則 MissingIndicator 變換將堆疊到 imputer 變換的輸出上。這允許預測估計器解釋缺失,盡管有插補。如果某個特征在擬合/訓練時沒有缺失值,則即使在變換/測試時存在缺失值,該特征也不會出現在缺失指示器上。

屬性

initial_imputer_ SimpleImputer 類型的對象

Imputer 用於初始化缺失值。

imputation_sequence_元組列表

每個元組都有 (feat_idx, neighbor_feat_idx, estimator) ,其中 feat_idx 是要估算的當前特征,neighbor_feat_idx 是用於估算當前特征的其他特征的數組,而 estimator 是用於估算的經過訓練的估計器。長度為 self.n_features_with_missing_ * self.n_iter_

n_iter_int

發生的迭代輪數。如果達到提前停止標準,將小於self.max_iter

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

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

n_features_with_missing_int

具有缺失值的特征數。

indicator_sklearn.impute.MissingIndicator

用於為缺失值添加二元指標的指標。 None 如果 add_indicator=False

random_state_RandomState 實例

RandomState 實例由種子、隨機數生成器或由 np.random 生成。

注意

為了支持歸納模式下的插補,我們在 fit 階段存儲每個特征的估計器,並在 transform 階段進行預測而不重新擬合(按順序)。

包含 fit 處所有缺失值的特征將在 transform 上被丟棄。

參考

1

Stef van Buuren, Karin Groothuis-Oudshoorn (2011)。 “小鼠:通過 R 中的鏈式方程進行多元插補”。統計軟件雜誌 45:1-67。

2

S. F. 巴克 (1960)。 “適用於電子計算機的多元數據中缺失值的估計方法”。皇家統計學會雜誌 22(2): 302-306。

例子

>>> import numpy as np
>>> from sklearn.experimental import enable_iterative_imputer
>>> from sklearn.impute import IterativeImputer
>>> imp_mean = IterativeImputer(random_state=0)
>>> imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]])
IterativeImputer(random_state=0)
>>> X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]]
>>> imp_mean.transform(X)
array([[ 6.9584...,  2.       ,  3.        ],
       [ 4.       ,  2.6000...,  6.        ],
       [10.       ,  4.9999...,  9.        ]])

相關用法


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