一、问题起源:

在Lightgbm中如何使用自定义函数呢,文档搜索中找到了feval,但不知道如何使用?

二、解决方案:

1、官方文档解释:


注意事项:1、自定义的损失函数接受两个参数;第一个是模型预测值,第二个是数据集数据类型,传入验证数据集;2、返回值有三个:eval_name(字符串,随意起名), eval_result, is_higher_better(bool类型)

1、自定义损失函数

def rmse(y_true, y_pred):return np.sqrt(mean_squared_error(y_true, y_pred))
def feval_rmse(y_pred, lgb_train):y_true = lgb_train.get_label()print(len(y_true))return 'rmse', rmse(y_true, y_pred), False

2、lightgbm训练代码,调用eval

params = {'learning_rate':0.05,"objective": "regression","metric": "rmse",'boosting_type': "gbdt",'verbosity': -1,'n_jobs': -1, 'seed': 20220215002,'n_estimators': 500, 'max_depth': 5, }
target_flag = np.where(train_data.target >= 0, 1, 0)
skf = StratifiedKFold(n_splits=3)
fold = 0
metric_over_time = {}
for train_idx, test_idx in skf.split(train_data, target_flag):X_train, y_train = train_data.iloc[train_idx][num_feat_name], train_data.iloc[train_idx]['target']X_valid, y_valid = train_data.iloc[test_idx][num_feat_name], train_data.iloc[test_idx]['target']train_dataset = lgb.Dataset(X_train, y_train)valid_dataset = lgb.Dataset(X_valid, y_valid)model = lgb.train(params,train_set = train_dataset, valid_sets = [valid_dataset], feval = feval_rmse,callbacks=[lgb.early_stopping(100), lgb.log_evaluation(100), lgb.record_evaluation(metric_over_time)])

每一次迭代完都会调用feval,传入验证数据集的此轮迭代的预测值与验证数据集;

3、训练结果:

lightgbm中的feval参数使用明细相关推荐

  1. window.open打开页面并传值,window. location.search遍历获取到的请求链接中的所有参数

    window.open打开页面并传值,遍历 window.location.search取到的url参数 1.a.js中打开OtherBankProtocol.html页面 window.open打开 ...

  2. python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化

    完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...

  3. Struts2中Action接收参数

    Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属 ...

  4. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  5. 如何在Matlab中获取函数参数的数目?

    本图文详细介绍了Matlab中获取函数参数数目的方法.

  6. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  7. oracle自动分区maxvalue,分区表中的maxvalue参数设置-Oracle

    分区表中的maxvalue参数设置 结论:partition p3 values less than (maxvalue)   分区表中maxvalue如果用具体参数来代替,则整个表中可插入的最大值不 ...

  8. R语言可视化绘制及PDF使用字体参数列表:查看字体列表、可视化绘制图像中的字体参数列表、字体示例并写入pdf

    R语言可视化绘制及PDF使用字体参数列表:查看字体列表.可视化绘制图像中的字体参数列表.字体示例并写入pdf 目录 R语言可视化绘制及PDF使用字体参数列表:查看字体列表.可视化绘制图像中的字体参数列 ...

  9. seaborn使用violinplot函数可视化小提琴图、并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度

    seaborn使用violinplot函数可视化小提琴图.并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度(Seaborn violinplot with data po ...

最新文章

  1. 【代码笔记】iOS-评分,支持我们
  2. java课程总结_Java课程总结 - osc_uyb9f22c的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 如何系统性的学习 Javascript?
  4. 【方案分享】地产项目2022年新春1月系列暖场活动策划方案:新年置业,如虎添翼.pptx(附下载链接)...
  5. dbvisivuser连oracle数据库报错没有权限
  6. 工业互联网网络安全防护亟待提高
  7. SW转发与MAC地址表
  8. 如何用 Excel 制作二维码
  9. 给定经纬度计算距离_根据两点经纬度计算距离
  10. 第06章 软件架构设计 之 软件架构风格
  11. 秋天是一个思念的季节
  12. 友盟分享c8998报错原因
  13. 尝试投了下 OR 被拒,领教了顶级期刊的审稿
  14. 如何把身份证扫描成电子版?证件转电子版,这3个方法超好用
  15. TCP 和 UDP 可以使用相同端口吗?
  16. pytorch(2)Tensor创建和获取tensor的size信息、torch.dtype、torch.device、torch.layout
  17. 采用OKR框架如何使组织敏捷
  18. 如何使用安卓开发工具 Android Studio
  19. (一)基于SenchaCmd搭建ExtJS 6.2版本开发环境(图文教程)
  20. html flex上下居中,css3 flex实现div内容水平垂直居中的几种方法

热门文章

  1. python基础教程:多态、多继承、函数重写、迭代器详细教程
  2. Python练习题:计算平均分
  3. Python-函数和代码复用
  4. python中判断变量的类型
  5. crmeb单商户java版安装_前端配置说明 · CRMEB 单商户Java版 帮助文档 · 看云
  6. VMWare虚拟机打不开、繁忙无法关闭、不可恢复错误(mks)(不要在虚拟机下用win+L锁屏,不然就繁忙。。。)
  7. opencv python 将RGB表示的图像转换为HSV(或Ycbcr)表示
  8. python的yield和yield from
  9. linux——apache
  10. SpringBoot+Redis防止接口重复提交