lightgbm中的feval参数使用明细
一、问题起源:
在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参数使用明细相关推荐
- window.open打开页面并传值,window. location.search遍历获取到的请求链接中的所有参数
window.open打开页面并传值,遍历 window.location.search取到的url参数 1.a.js中打开OtherBankProtocol.html页面 window.open打开 ...
- python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化
完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...
- Struts2中Action接收参数
Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数: a.定义:在Action类中定义属 ...
- Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...
Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于:2012-09-15 ...
- 如何在Matlab中获取函数参数的数目?
本图文详细介绍了Matlab中获取函数参数数目的方法.
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- oracle自动分区maxvalue,分区表中的maxvalue参数设置-Oracle
分区表中的maxvalue参数设置 结论:partition p3 values less than (maxvalue) 分区表中maxvalue如果用具体参数来代替,则整个表中可插入的最大值不 ...
- R语言可视化绘制及PDF使用字体参数列表:查看字体列表、可视化绘制图像中的字体参数列表、字体示例并写入pdf
R语言可视化绘制及PDF使用字体参数列表:查看字体列表.可视化绘制图像中的字体参数列表.字体示例并写入pdf 目录 R语言可视化绘制及PDF使用字体参数列表:查看字体列表.可视化绘制图像中的字体参数列 ...
- seaborn使用violinplot函数可视化小提琴图、并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度
seaborn使用violinplot函数可视化小提琴图.并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度(Seaborn violinplot with data po ...
最新文章
- 【代码笔记】iOS-评分,支持我们
- java课程总结_Java课程总结 - osc_uyb9f22c的个人空间 - OSCHINA - 中文开源技术交流社区...
- 如何系统性的学习 Javascript?
- 【方案分享】地产项目2022年新春1月系列暖场活动策划方案:新年置业,如虎添翼.pptx(附下载链接)...
- dbvisivuser连oracle数据库报错没有权限
- 工业互联网网络安全防护亟待提高
- SW转发与MAC地址表
- 如何用 Excel 制作二维码
- 给定经纬度计算距离_根据两点经纬度计算距离
- 第06章 软件架构设计 之 软件架构风格
- 秋天是一个思念的季节
- 友盟分享c8998报错原因
- 尝试投了下 OR 被拒,领教了顶级期刊的审稿
- 如何把身份证扫描成电子版?证件转电子版,这3个方法超好用
- TCP 和 UDP 可以使用相同端口吗?
- pytorch(2)Tensor创建和获取tensor的size信息、torch.dtype、torch.device、torch.layout
- 采用OKR框架如何使组织敏捷
- 如何使用安卓开发工具 Android Studio
- (一)基于SenchaCmd搭建ExtJS 6.2版本开发环境(图文教程)
- html flex上下居中,css3 flex实现div内容水平垂直居中的几种方法
热门文章
- python基础教程:多态、多继承、函数重写、迭代器详细教程
- Python练习题:计算平均分
- Python-函数和代码复用
- python中判断变量的类型
- crmeb单商户java版安装_前端配置说明 · CRMEB 单商户Java版 帮助文档 · 看云
- VMWare虚拟机打不开、繁忙无法关闭、不可恢复错误(mks)(不要在虚拟机下用win+L锁屏,不然就繁忙。。。)
- opencv python 将RGB表示的图像转换为HSV(或Ycbcr)表示
- python的yield和yield from
- linux——apache
- SpringBoot+Redis防止接口重复提交