如何使用 IterativeImputer 评估回归器性能?

How to evaluate regressor performance with 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, 15, 20, np.nan, 17, 9],
                      'feat1':[0.3, 0.1, 0.7, 0.5, np.nan, np.nan, 0.1, 0.7, 0.8, 0.2, 0.2],
                      'feat2':[np.nan, 19, 80, 65, np.nan, 70, 88, 12, 90, 73, 91]})

imp = IterativeImputer(estimator=RandomForestRegressor(), random_state=0)
df_imp = imp.fit_transform(df)

例如,这里我可以直接使用它,但我不知道如何从统计上证明它的性能。

一种方法是抽取变量的某些 non-null 值作为真实值(即备份 non-null 值的一部分)。然后将这些值设置为 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'])