如何解决如何使用IterativeImputer评估回归器性能?
我正在使用IterativeImputer处理数据集中的丢失数据,这似乎是一个不错的资源。虽然,我如何评估这种回归的表现?有没有办法我可以在这种推动力下使用一些性能指标作为r²或RMSE?
import numpy as np
import pandas as pd
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
from sklearn.ensemble import RandomForestRegressor
df = pd.DataFrame({'feat0':[10,6,np.nan,35,15,40,20,17,9],'feat1':[0.3,0.1,0.7,0.5,0.8,0.2,0.2],'feat2':[np.nan,19,80,65,70,88,12,90,73,91]})
imp = IterativeImputer(estimator=RandomForestRegressor(),random_state=0)
df_imp = imp.fit_transform(df)
例如,在这里我只能使用它,但是我不知道如何从统计学上证明其性能。
解决方法
一种方法是将变量的一些非空值作为真实值进行采样(即备份一部分非空值)。然后将这些值设置为null并执行imputer。拥有估算值后,就可以使用任何性能指标来比较已备份的真实值和估算值(您只考虑真实值集中可用的索引以进行比较)。下面是一个示例:
true_values_ix = df.dropna(subset=['variable1']).sample(frac=0.1).index
true_values = df['variable1']
df.loc[true_values_ix,'variable1'] = np.NaN
完成估算后,请使用指标检查性能(这里我使用了自定义函数 mape -
mape(df.loc[true_values_ix,'variable1'],imputed_df.loc[true_values_ix,'variable1'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。