Использование подобранной модели в make_scorer для gridsearchcv

Я создаю собственный счетчик для объекта 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: как передать информацию о примерах сгиба в мою функцию подсчета очков? что, похоже, возможно. Этот подход, казалось бы, заключается в написании функции в форме бомбардира (оценка, X, y), но я думаю, что это все еще будет иметь проблему, заключающуюся в том, что модель будет обучаться на всех данных. Есть ли способ передать оценщик пользовательской функции оценки, которая будет использоваться gridsearchcv?


person RyanL    schedule 29.10.2018    source источник
comment
X_info такого же размера, как X_train? Можете ли вы показать, что вы собираетесь делать с X_info (код в make_custom_score)? Поскольку X_train внутри GridSearchCV будет делиться на обучение и тестирование, будет ли такое же разделение применяться к X_info?   -  person Vivek Kumar    schedule 30.10.2018
comment
X_info и clf будут переданы, чтобы я мог получить вероятности X_info. Эти вероятности будут использоваться в функции подсчета очков. Это другой фрейм данных (поэтому он не такого размера, как X_train), и нет необходимости разбивать фрейм данных, мне нужны все вероятности.   -  person RyanL    schedule 30.10.2018