如何使用针对“昂贵”预测调用的多指标评估GridSearchCV

时间:2018-04-04 14:35:54

标签: python scikit-learn

我有一个自定义的基于实例的估算工具,带有“昂贵的”预测调用,我希望将其传递给GridSearchCV,并让它自版本19.0开始计算多个指标并描述here。实施此操作是为了避免多次调用train。对我来说,预测比训练更昂贵,并且在得分手predict内仍然会为每个得分手here调用评估者,即使仅仅计算y_pred一次就足够了对于每个指标,它都是_score_func

class _PredictScorer(_BaseScorer):
    def __call__(self, estimator, X, y_true, sample_weight=None):
        [...]
        y_pred = estimator.predict(X)
        [...]
        return self._sign * self._score_func(y_true, y_pred,
                                                 **self._kwargs)

即使滚动我的一个Scorer并从_BaseScorer继承,我也看不到包含y_pred的方法,因为它在GridSearchCV中被调用如下:

score = scorer(estimator, X_test, y_test)

我可以编写自己的网格搜索,但是就像界面一样,以便将来可以轻松地与其他类(如RandomSearchCV)或可能更复杂的类进行交换。另外,我喜欢使用cv_results_数据框。

我还可以在估算器中使用相同的参数缓存调用,这些调用感觉很糟糕。

使用尽可能多的sklearn API可以实现任何其他方式吗?

0 个答案:

没有答案