Как установить собственную оценку с помощью GridSearchCV из sklearn для регрессии?
Я использовал 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 ответ
Это технически потеря, где чем ниже, тем лучше. Вы можете включить эту опцию в make_scorer
:
more_is_better: boolean, 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)