如何解决如何使用回归器为多个列估算缺失值?
这是我拥有的更大数据集的示例。
想象一下,我有一个包含不同列的数据框,并且每一列在某些部分都存在缺失值(NaN)。
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
df = pd.DataFrame({'a':[0.3,0.2,0.5,0.1,0.4,np.nan,0.6,0.3,0.5],'b':[4,3,5,6,8,7,4],'c':[20,25,35,30,10,18,16,22,26,np.nan]})
例如,我想使用RandomForestRegressor预测这些缺失值,并以其他列作为特征。换句话说,当我看到一个带有NaN的样本时,我想将其他两列中的值用作预测该缺失值的特征。
我通常可以针对独特功能执行此操作,但是我希望对每一列都执行自动操作。
谢谢。
解决方法
您可以使用sklearn中的IterativeImputer
,并在estimator参数中为其提供RandomForestRegressor
:
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
df = pd.DataFrame({'a':[0.3,0.2,0.5,0.1,0.4,np.nan,0.6,0.3,0.5],'b':[4,3,5,6,8,7,4],'c':[20,25,35,30,10,18,16,22,26,np.nan]})
imp_mean = IterativeImputer(estimator=RandomForestRegressor(),random_state=0)
imp_mean.fit(df)
display(pd.DataFrame(imp_mean.transform(df)))
然后将返回以下数据帧,其中将相应推算nan值:
0 1 2
0 0.300 4.00 20.00
1 0.200 3.00 25.00
2 0.500 5.00 35.00
3 0.100 3.69 30.00
4 0.400 5.53 10.00
5 0.500 5.78 18.00
6 0.389 5.00 16.00
7 0.455 6.00 22.00
8 0.463 5.00 26.00
9 0.600 8.00 21.02
10 0.300 7.00 16.92
11 0.500 4.00 29.98
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。