Реализация пользовательской функции потерь в Scikit Learn - PullRequest
0 голосов
/ 19 января 2019

Я хочу реализовать пользовательскую функцию потерь в scikit learn.Я использую следующий фрагмент кода:

def my_custom_loss_func(y_true,y_pred):
   diff3=max((abs(y_true-y_pred))*y_true)
   return diff3

score=make_scorer(my_custom_loss_func,greater_ is_better=False)
clf=RandomForestRegressor()
mnn= GridSearchCV(clf,score)
knn = mnn.fit(feam,labm) 

Какими должны быть аргументы, передаваемые в my_custom_loss_func?Моя матрица меток называется labm.Я хочу рассчитать разницу между фактическим и прогнозируемым результатом (по модели), умноженным на истинный результат.Если я использую labm вместо y_true, что я должен использовать вместо y_pred?

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Аргументы вашего my_custom_func_loss не имеют никакого отношения к вашим истинным ярлыкам, а это labm.Вы можете сохранить путь, как сейчас.

Внутренне GridSearchCV вызовет функцию оценки, поэтому ваши истинные метки не конфликтуют там.y_pred будет прогнозными значениями, сгенерированными из выходных данных модели.y_true будет присвоено значение labm.

0 голосов
/ 19 января 2019

Документация для make_scorer выглядит следующим образом:

sklearn.metrics.make_scorer(score_func, greater_is_better=True, needs_proba=False, 
needs_threshold=False, **kwargs)

Итак, вам не нужно передавать аргументы при вызове функции. Это то, что вы спрашивали?

...