我正在为gridsearchcv对象创建一个自定义评分器。对于客户计分员,我需要来自两个不同数据框的概率,但是应该仅在其中一个数据框上训练模型。需要另一个数据框来获得概率。这些概率将用于评分功能。
我曾考虑过串联数据帧,但是其中一个数据帧没有事实依据。这会导致传递y_true产生问题。
我也曾尝试将模型传递给自定义评分功能,但是我回溯到该模型不合适。这是我要执行的操作的示例:
def fit(self, X_train, y_train, X_info):
grid = self._create_grid_search()
clf = GradientBoostingClassifier()
score_func = make_scorer(self.make_custom_score, needs_proba=True, clf=clf, X_info=X_info)
model = GridSearchCV(estimator=clf,
param_grid=grid,
scoring=score_func,
cv=3)
def make_custom_score(self, y_true, y_score, clf, X_info):
我发现了这个问题:SKLearn cross-validation: How to pass info on fold examples to my scorer function? 这似乎是可能的。这种方法似乎是以记分器(estimator,X,y)的形式编写一个函数,但是我认为仍然会存在一个问题,那就是该模型将在所有数据上进行训练。有什么方法可以将估计量传递给gridsearchcv要使用的自定义得分函数?