首页 > 解决方案 > 在 scikit learn 中自定义损失函数

问题描述

如何在 scikit learn 中自定义损失函数?例如,我想使用 MSE 乘以样本的真实值,而不是使用均方误差。我使用了以下代码片段:

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

clf=RandomForestRegressor(criterion=my_custom_loss_func)
knn=clf.fit(feam,labm)

我收到以下错误:

KeyError: <function my_custom_loss_func at 0x000000002EA9CA60>

标签: pythonpython-3.xmachine-learningscikit-learnloss-function

解决方案


您可以在 scikit learn 中自定义损失函数,为此您需要将make_scorer工厂应用于您的自定义损失函数,例如:

from sklearn.metrics import make_scorer
score = make_scorer(my_custom_loss_func, greater_is_better=False)

在您使用随机森林的特定情况下,尽管您无法自定义标准,但您可以做的是优化超参数,GridSearchCV并且您可以使用自定义损失。


推荐阅读