python - 在 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>
解决方案
您可以在 scikit learn 中自定义损失函数,为此您需要将make_scorer
工厂应用于您的自定义损失函数,例如:
from sklearn.metrics import make_scorer
score = make_scorer(my_custom_loss_func, greater_is_better=False)
在您使用随机森林的特定情况下,尽管您无法自定义标准,但您可以做的是优化超参数,GridSearchCV
并且您可以使用自定义损失。
推荐阅读
- machine-learning - 训练完机器后该怎么办?
- docfx - 是否可以从多个存储库生成docfx 文档?
- android - 如何在 Yandex MapKit 3.4.0 上获取用户的当前位置和位置更新
- c# - HttpPostedFileBase 没有绑定到模型
- python - 如何通过嵌套循环在python中创建一个*框?
- qt - QML MouseArea 无法接收鼠标事件
- python - 从 .txt 文件导入网格而不使用图形界面
- c# - 单元测试项目不添加命令行参数
- node.js - 将 npm 包记录/推送到 nexus 时出现 400 错误请求?
- android - 当我尝试在 DB Browser for SQLite 上查看时,我的 .db 文件为空