[英]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.