You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kaggle中用hummingbird-ml加速GridSearchCV时遇AttributeError求助

解决GridSearchCV转hummingbird-ml后无法访问best_params_的问题

问题描述

在Kaggle笔记本中使用GridSearchCV调优SVR模型,尝试通过hummingbird-ml将模型转换为PyTorch格式以利用GPU加速训练,运行时触发错误:AttributeError: 'GridSearchCV' object has no attribute 'best_estimator_'(代码中调用best_params_时本质是同一问题)。

核心原因

hummingbird-ml的convert函数仅针对已训练完成的单模型做转换适配,并不支持未拟合的GridSearchCV这类调优工具类。直接转换未fit的GridSearchCV对象后,其底层的调优逻辑无法保留scikit-learn原生的best_estimator_、best_params_等属性,导致调用时出错。

解决方案

步骤1:先在CPU上完成网格搜索调优

先运行GridSearchCV的拟合流程,获取调优后的最优模型及参数:

from hummingbird.ml import convert
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
from sklearn.metrics import make_scorer, mean_squared_error
from pprint import pprint
import numpy as np

base_svr = SVR()
scorer = make_scorer(mean_squared_error, greater_is_better=False)

# 移除precomputed核(需预计算核矩阵,否则会报错)
param_grid_svr = {
    'C': [0.01, 0.1, 1, 10, 100], 
    'gamma': [1, 0.1, 0.01, 0.001, 0.0001],
    'kernel': ['linear', 'poly', 'rbf', 'sigmoid'],
    'epsilon': [0.01, 0.1, 0.2, 0.3, 1]
}
pprint(param_grid_svr) 

# 先在CPU上完成网格搜索拟合
svr_gs = GridSearchCV(base_svr, param_grid_svr, n_jobs=-1, scoring=scorer, cv=3, refit=True, verbose=2)
svr_gs.fit(X_train, y_train)

# 直接获取最优参数和模型
print("最优参数:", svr_gs.best_params_)
best_svr = svr_gs.best_estimator_

步骤2:转换已训练的最优模型到GPU做加速推理

将调优完成的SVR模型转换为PyTorch格式,再切换到GPU进行推理加速(hummingbird对SVR的GPU训练支持有限,优先用于推理阶段):

# 转换已训练好的最优模型到PyTorch
best_svr_pytorch = convert(best_svr, 'torch')

# 切换到GPU
%%capture 
best_svr_pytorch.to('cuda')

# 用GPU执行推理
y_pred = best_svr_pytorch.predict(X_test)

额外提示

  • 如果需要全程GPU加速模型调优,建议使用cuML库中的SVR实现(原生支持GPU),配合其网格搜索工具,而非依赖hummingbird转换scikit-learn的GridSearchCV。

内容的提问来源于stack exchange,提问作者MarMarhoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:15:36