【问题标题】:How to evaluate regressor performance with IterativeImputer?如何使用 IterativeImputer 评估回归器性能?
【发布时间】:2021-01-03 22:33:06
【问题描述】:

我正在使用 IterativeImputer 来处理我的数据集中丢失的数据,它似乎是一个不错的资源。虽然,我如何评估此回归的性能?有没有一种方法可以让我使用一些性能指标作为 r² 或 RMSE 与这个 imputer?

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)

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

【问题讨论】:

    标签: python scikit-learn regression missing-data imputation


    【解决方案1】:

    一种方法是将变量的一些非空值采样为真值(即,对非空值的一部分进行备份)。然后将这些值设置为 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'])
    

    【讨论】:

    • 谢谢!这绝对是我需要的。 +1
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 2016-10-03
    • 2012-08-08
    • 2020-01-28
    • 2017-12-15
    • 2010-11-29
    • 2021-10-18
    • 2011-12-04
    相关资源
    最近更新 更多