catboost回归自动调参

import os
import time

import optuna
import pandas as pd
from catboost import CatBoostRegressor
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split

X_train = data.drop([‘label’, ‘b1’, ‘b2’], axis=1).values
y_train = data[‘label’].values
X_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size=0.2, random_state=42)

def epoch_time(start_time, end_time):
elapsed_secs = end_time - start_time
elapsed_mins = elapsed_secs / 60
return elapsed_mins, elapsed_secs

def objective(trial):
# 自定义的参数空间
depth = trial.suggest_int(‘depth’, 1, 16)
border_count = trial.suggest_int(‘border_count’, 1, 222)
l2_leaf_reg = trial.suggest_int(‘l2_leaf_reg’, 1, 222)
learning_rate = trial.suggest_uniform(‘learning_rate’, 0.001, 0.9)
iterations = trial.suggest_int(‘iterations’, 1, 100)
estimator = CatBoostRegressor(loss_function=‘RMSE’, random_seed=22, learning_rate=learning_rate,
iterations=iterations, l2_leaf_reg=l2_leaf_reg,
border_count=border_count,
depth=depth, verbose=0)
estimator.fit(X_train, y_train)
val_pred = estimator.predict(X_test)
mse = mean_squared_error(y_test, val_pred)
return mse

“”" Run optimize.
Set n_trials and/or timeout (in sec) for optimization by Optuna
“”"
study = optuna.create_study(sampler=optuna.samplers.TPESampler(), direction=‘minimize’)

study = optuna.create_study(sampler=optuna.samplers.RandomSampler(), direction=‘minimize’)

start_time = time.time()
study.optimize(objective, n_trials=10)
end_time = time.time()
elapsed_mins, elapsed_secs = epoch_time(start_time, end_time)
print(‘elapsed_secs:’, elapsed_secs)
print(‘Best value:’, study.best_trial.value)

import os
import time

import pandas as pd
from catboost import CatBoostRegressor
from hyperopt import fmin, hp, partial, Trials, tpe,rand
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split

自定义hyperopt的参数空间

space = {“iterations”: hp.choice(“iterations”, range(1, 100)),
“depth”: hp.randint(“depth”, 16),
“l2_leaf_reg”: hp.randint(“l2_leaf_reg”, 222),
“border_count”: hp.randint(“border_count”, 222),
‘learning_rate’: hp.uniform(‘learning_rate’, 0.001, 0.9),
}

X_train = data.drop([‘label’, ‘b1’, ‘b2’], axis=1).values
y_train = data[‘label’].values
X_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size=0.2, random_state=42)

def epoch_time(start_time, end_time):
elapsed_secs = end_time - start_time
elapsed_mins = elapsed_secs / 60
return elapsed_mins, elapsed_secs

自动化调参并训练

def cat_factory(argsDict):
estimator = CatBoostRegressor(loss_function=‘RMSE’, random_seed=22, learning_rate=argsDict[‘learning_rate’],
iterations=argsDict[‘iterations’], l2_leaf_reg=argsDict[‘l2_leaf_reg’],
border_count=argsDict[‘border_count’],
depth=argsDict[‘depth’], verbose=0)
estimator.fit(X_train, y_train)
val_pred = estimator.predict(X_test)
mse = mean_squared_error(y_test, val_pred)
return mse

算法选择 tpe

algo = partial(tpe.suggest)

随机搜索

algo = partial(rand.suggest)

初始化每次尝试

trials = Trials()

开始自动参数寻优

start_time = time.time()
best = fmin(cat_factory, space, algo=algo, max_evals=10, trials=trials)
end_time = time.time()
elapsed_mins, elapsed_secs = epoch_time(start_time, end_time)
print(‘elapsed_secs:’, elapsed_secs)
all = []

遍历每一次的寻参结果

for one in trials:
str_re = str(one)
argsDict = one[‘misc’][‘vals’]
value = one[‘result’][‘loss’]
learning_rate = argsDict[“learning_rate”][0]
iterations = argsDict[“iterations”][0]
depth = argsDict[“depth”][0]
l2_leaf_reg = argsDict[“l2_leaf_reg”][0]
border_count = argsDict[“border_count”][0]
finish = [value, learning_rate, iterations, depth, l2_leaf_reg, border_count]
all.append(finish)

parameters = pd.DataFrame(all, columns=[‘value’, ‘learning_rate’, ‘iterations’, ‘depth’, ‘l2_leaf_reg’, ‘border_count’])

从寻参结果中找到r2最大的

best = parameters.loc[abs(parameters[‘value’]).idxmin()]
print(“best: {}”.format(best))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探究公有云中的巨人:深入分析大数据产品的架构设计

目录 一、服务器分类 二、公有云基础和产品 网络 vpc专有网络 弹性公网IP(Elastic IP)

3种事件绑定的异同(js的问题)

html事件 dom0事件 dom2事件 • 广义javascript ECMAScript DOM BOM DOM0 DOM1 DOM2 • 狭义javascript ECMAScript ES6 ES5 ES3 事件监听的优点:可以绑定多个事件,常规的事件绑定只执行最后绑定的事件 事件绑定:相当于存储…

从外网访问内网服务器:安装到使用一站通

如果你所在的是一个小的实验室,可能并没有大型的服务器集群而是仅是配备了小型服务器,日常工作便是在在局域网内访问服务器进行各项数据处理。因为在外网无法访问内网服务器,极大的限制了我们偶尔在外想监测一下数据的欲望。本文介绍了一种简…

策略模式(及案例)

策略模式 1.策略接口 定义一组算法或操作的通用接口,通常是一个抽象类或接口。该接口声明了策略类所必须实现的方法。 示例: class Strategy {doOperation() {} }2.具体策略 实现策略接口,提供具体的算法实现。每个具体策略类负责处理一…

二、C#基础语法( 函数与方法)

在C#语言中,函数和方法都是用于实现特定功能的代码块。虽然它们有一些相似之处,但它们在使用和定义上有一些细微的差别。 函数(Functions) 函数在C#中是独立的功能单元,执行特定操作并返回一个值。函数的定义以关键字…

postman win7 低版本 postman7.0.9win64 postman7.0.9win32

百度网盘: postman7.0.9win64: 链接: https://pan.baidu.com/s/18ck9tI0r9Pqoz36MOwwnnQ 提取码: rkf7 postman7.0.9win32: 链接: https://pan.baidu.com/s/1HrpGPrgvVzyAcjdHuwVOpA 提取码: ke5k win7系统安装postman,可能会…

postman使用-04响应

文章目录 响应响应界面说明Pretty:格式化显示,以便查看Raw:不进行任何处理,显示响应数据的原始格式Preview:预览响应体,会自动换行,不会格式化(有时候是数据,有时候是页面…

leetcode151. 反转字符串中的单词

题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导…

测试-FastJSON和Jackson-JSON库

文章目录 FastJSONJackson注意 FastJSON 直接读代码: Log4j2 public class FastJsonTest {Testpublic void test1() {// JSON转对象-parseObjectString jsonString "{\"name\":\"张三\",\"age\":18}";Student student …

实战 | 使用OpenCV快速去除文档中的表格线条(步骤 + 源码)

导 读 本文主要介绍如何使用OpenCV快速去除文档中的表格线条,并给详细步骤和代码。 背景介绍 测试图如下,目标是去除下面三张图中的表格线条,方便后续图像处理。 实现步骤 下面演示详细步骤,以图1为例: 【1】获取二值图像:加载图像、转为灰度图、OTSU二值化 i…

日本it培训班,日本IT大体分几类?

日本是一个老龄化极其严重的国家,拜泡沫经济破灭后的经济停滞所赐,民众取得了节育方面的丰硕成果,然而当经济终于走出阴霾,呈现复苏迹象时,短缺的劳动力又成了一大问题,拖累整个经济的步伐。为了应对劳工市…

仪表盘、数据分析新增分享功能及应用服务下新增服务实例菜单

近期,博睿数据根据一体化智能可观测平台 Bonree ONE 产品本身,以及用户反馈进行持续的更新和优化。以下为 Bonree ONE 产品功能更新报告第03期内容,更多探索,未完待续。 本次迭代的更新集中在平台的仪表盘、数据分析新增分享功能&…

C++面向对象(OOP)编程-C++11新特性详解

C11作为一个重要的版本,引入了很多新的特性,解决了C语言本身很多遗留的内存泄露问题,并且提供了很多比较灵活的用法。引入的auto,智能指针、线程机制都使得C语言的灵活性、安全性、并发性有了很大的提升。 本文会比较详细的介绍C1…

Kubernetes 学习总结(41)—— 云原生容器网络详解

背景 随着网络技术的发展,网络的虚拟化程度越来越高,特别是云原生网络,叠加了物理网络、虚机网络和容器网络,数据包在网络 OSI 七层网络模型、TCP/IP 五层网络模型的不同网络层进行封包、转发和解包。网络数据包跨主机网络、容器…

IntelliJ IDE 插件开发 | (四)开发一个时间管理大师插件

系列文章 IntelliJ IDE 插件开发 |(一)快速入门IntelliJ IDE 插件开发 |(二)UI 界面与数据持久化IntelliJ IDE 插件开发 |(三)消息通知与事件监听IntelliJ IDE 插件开发 |(四)开发一…

未来编程语言什么样?编译解释兼方为王

○、编程语言的未来? 随着科技的飞速发展,编程语言在计算机领域中扮演着至关重要的角色。它们是软件开发的核心,为程序员提供了与机器沟通的桥梁。那么,在技术不断进步的未来,编程语言的走向又将如何呢? …

storyBook play学习

场景 在官方给出的案例中, Page.stories.js import { within, userEvent } from storybook/testing-library import MyPage from ./Page.vueexport default {title: Example/Page,component: MyPage,parameters: {// More on how to position stories at: https:/…

使用Mybatis-plus分页查询的Total与实际条数不对应

现象 对于单表查询是没有问题的。而需要多表关联查询(自写sql)时,就会查询调用Mybatis-Plus的.page(Page page,Wrapper queryWrapper); 可以看到后台实际执行sql有两个。 一个是查询sql的数据: selectvisit.id as id,visit.rfi…

Java中常见的日志包分析(Log4j、Logback、SLF4J等)

Java中常见的日志jar包包括Log4j、Logback、SLF4J、java.util.logging等。它们各自的作用和应用场景如下: 1. Log4j 作用:Log4j是Apache的一个开源项目,提供日志记录的功能,支持多种输出目的地,如控制台、文件、GUI组…

【银行测试】金融银行-理财项目面试/分析总结(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行理财相关的项…