[英]Implementation of sklearn.impute.IterativeImputer
考慮下面包含一些 nan 的data
:
Column-1 Column-2 Column-3 Column-4 Column-5
0 NaN 15.0 63.0 8.0 40.0
1 60.0 51.0 NaN 54.0 31.0
2 15.0 17.0 55.0 80.0 NaN
3 54.0 43.0 70.0 16.0 73.0
4 94.0 31.0 94.0 29.0 53.0
5 99.0 52.0 77.0 91.0 58.0
6 84.0 19.0 36.0 NaN 97.0
7 41.0 91.0 62.0 67.0 68.0
8 44.0 38.0 27.0 53.0 37.0
9 58.0 NaN 63.0 57.0 28.0
10 66.0 68.0 89.0 36.0 47.0
11 7.0 81.0 5.0 99.0 16.0
12 43.0 55.0 64.0 88.0 NaN
13 8.0 90.0 91.0 44.0 4.0
14 29.0 52.0 94.0 71.0 47.0
15 22.0 21.0 68.0 61.0 38.0
16 76.0 36.0 70.0 99.0 50.0
17 38.0 31.0 66.0 79.0 99.0
18 94.0 22.0 92.0 39.0 58.0
我想使用sklearn.impute.IterativeImputer
替換data
中的sklearn.impute.IterativeImputer
。 一個朋友幫我寫了下面的代碼:
imp = IterativeImputer(missing_values=np.nan, sample_posterior=False,
max_iter=10, tol=0.001,
n_nearest_features=4, initial_strategy='median')
imp.fit(data)
imputed_data = pd.DataFrame(data=imp.transform(data),
columns=['Column-1', 'Column-2', 'Column-3', 'Column-4', 'Column-5'],
dtype='int')
imputed_data
是:
Column-1 Column-2 Column-3 Column-4 Column-5
0 59 15 63 8 40
1 60 51 66 54 31
2 15 17 55 80 48
3 54 43 70 16 73
4 94 31 94 29 53
5 99 52 77 91 58
6 84 19 36 59 97
7 41 91 62 67 68
8 44 38 27 53 37
9 58 46 63 57 28
10 66 68 89 36 47
11 7 81 5 99 16
12 43 55 64 88 47
13 8 90 91 44 4
14 29 52 94 71 47
15 22 21 68 61 38
16 76 36 70 99 50
17 38 31 66 79 99
18 94 22 92 39 58
從IterativeImputer
文檔中,默認估計器是BayesianRidge()
。 但是,如果我像下面的代碼一樣使用其他估算器,例如estimator=ExtraTreesRegressor(n_estimators=10, random_state=0)
,它會返回一條警告消息。 編碼:
imp = IterativeImputer(estimator=ExtraTreesRegressor(n_estimators=10, random_state=0), missing_values=np.nan, sample_posterior=False,
max_iter=10, tol=0.001,
n_nearest_features=4, initial_strategy='median')
imp.fit(data)
消息:
C:\Users\...\sklearn\impute\_iterative.py:599: ConvergenceWarning: [IterativeImputer] Early stopping criterion not reached. " reached.", ConvergenceWarning).
我的問題:這是一種正確的方法還是我應該做些什么來修復警告消息?
謝謝你。
他們在這里遇到了同樣的問題:
由於為IterativeImputer()
設置的參數max_iter=10
& tol=0.001
您收到此錯誤。
停止標准( abs(max(X_t - X_{t-1}))/abs(max(X[known_vals])) < tol
)不滿足 10 次迭代( max_iter=10
)。
參閱的描述max_iter
中的參數部分sklearn.impute.IterativeImputer
文檔。
克服此錯誤的一種解決方法是將max_iter
參數值設置得更高。
您是否嘗試先導入 ExtraTreesRegressor。 它應該可以正常工作。
from sklearn.ensemble import ExtraTreesRegressor.
還要檢查 scikit learn 的版本。 它應該是 0.21.1 及以上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.