在SCRICIT学习中实现自定义丢失功能 [英] Implementing custom loss function in scikit learn

查看:19
本文介绍了在SCRICIT学习中实现自定义丢失功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在SCRKIT学习中实现自定义丢失功能。我使用以下代码片段:

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

推荐答案

好的,这里有3件事:

1)培训时有损失函数用于调整模型参数

2)有一个评分函数,用于判断您的模型的质量

3)有超参数调整功能,它使用评分函数来优化您的超参数。

所以..。如果您正在尝试调优超参数,那么为该目的定义"亏损FXN"是正确的。但是,如果您试图调整整个模型以使其在(比方说)召回测试中表现良好,那么您需要一个召回优化器来作为培训过程的一部分。这很棘手,但你可以做到的…

1)打开您的分类器。例如,让我们使用RFC:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

2)点击[源]

3)查看它是如何从Forest分类器继承的?就在类定义中。单击该词可跳转到其父定义。

4)查看此新对象是如何继承自分类器Mixin的?单击该按钮。

5)查看该分类器Mixin类的底部是如何表示这一点的?

from .metrics import accuracy_score
return accuracy_score(y, self.predict(X), sample_weight=sample_weight)

那是你的模型正在接受精确度方面的训练。如果你想把你的模型训练成一个"召回模型"或者"精确模型"或者其他任何模型,你需要在这一点上进行注射。此精确度指标包含在SKLearning中。总有一天,一个比我更好的人会让这个参数成为模型接受的参数,但与此同时,你必须进入你的skLearning安装,并将这个Accuracy_Score调整为你想要的任何东西。

祝你好运!

这篇关于在SCRICIT学习中实现自定义丢失功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆