Как установить собственную оценку с помощью GridSearchCV из sklearn для регрессии? - PullRequest
0 голосов
/ 01 декабря 2018

Я использовал GridSearchCV (... scoring = "precision" ...) для модели классификации.и теперь я собираюсь использовать GridSearchCV для регрессионной модели и установить оценку с собственной функцией ошибки.

Пример кода:

def rmse(predict, actual):
    predict = np.array(predict)
    actual = np.array(actual)

    distance = predict - actual

    square_distance = distance ** 2

    mean_square_distance = square_distance.mean()

    score = np.sqrt(mean_square_distance)

    return score

rmse_score = make_scorer(rmse)

gsSVR = GridSearchCV(...scoring=rmse_score...)
gsSVR.fit(X_train,Y_train)
SVR_best = gsSVR.best_estimator_
print(gsSVR.best_score_)

Однако я обнаружил, что таким способом возвращают набор параметров, когдаоценка ошибки самая высокая.В результате я получил худший набор параметров и балл.В таком случае, как я могу получить лучшую оценку и оценку?

Сводка:

классификация -> GridSearchCV (оценка = "точность") -> best_estimaror ... best

регрессия -> GridSearchCV (scroing = rmse_score) -> best_estimator ... худший

1 Ответ

0 голосов
/ 01 декабря 2018

Это технически потеря, где чем ниже, тем лучше.Вы можете включить эту опцию в make_scorer:

большее_is_better : логическое значение, default = True Является ли Score_func счетомфункция (по умолчанию), означающая, что высокий - это хорошо, или функция потерь, означающая, что низкий - это хорошоВ последнем случае объект счетчика будет переворачивать результат Score_func.

Вам также нужно изменить порядок входных данных с rmse(predict, actual) на rmse(actual, predict), потому что это будет порядок GridSearchCVпередать их.Итак, итоговый бомбардир будет выглядеть так:

def rmse(actual, predict):

    ...
    ...
    return score

rmse_score = make_scorer(rmse, greater_is_better = False)
...