【机器学习实践】自动调参的实践(hyperopt)

本文介绍了如何使用Python库hyperopt进行自动调参,通过一个kaggle的实例展示了如何定义模型函数并设置参数范围,从而找到最优模型参数,提高模型性能,实现了从0.6917的交叉验证结果提升到0.8253。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

{

    在看西瓜书11章的时候,突然想到模型的超参数问题。之前我都是在尝试别人的模型+自己凭感觉给的超参数,不过学习的时候最好不要靠感觉(话说靠感觉也要能解释的通)。

    我记得去年我去了谷歌的线下开发者大会,当时遇到一个谷歌的工程师,我向他咨询为什么我修改的模型效果不好(我把inception模型中间部分的数据提取出来做特征,但是效果反而变差),当时那个工程师告诉我一些事情,大概就是这些模型都是程序自动生成的最优分类模型,分类任务的话就不需要再修改了。

    现在,西瓜书已经看了一大半,该练练了。我不打算修改模型的结构,但至少试着自动调参。

}

 

正文:

{

    hyperopt是一个操作非常简单的Python库。为了使用hyperopt,你需要做的就是把你的模型写成一个函数,其输入是各种参数,输出一种误差;并且设定好各个参数的范围,之后选择一种寻找方式让机器自动寻找最优参数。

    下面用kaggle中"别过拟合"的数据集[2]来具体实现hyperopt

    导入各种库:

import numpy as np
import xgboost as xgb
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import KFold
import pandas as pd
import time
import datetime
import hyperopt

    载入数据(这里并没有用到测试数据):

#set training
train_data = pd.read_csv("train.csv")
X_train = train_data[train_data.columns[2:]]
Y_train = train_data[train_data.columns[1]]

#no need for use of test data
train_data = pd.read_csv("train.csv")
X_test = train_data[train_data.columns[1:]]

    kaggle大神[3]的模型代码的改版:

def train_model(X, X_test, y, params=None, n_fold=5, plot_feature_importan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值