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
相关产品推荐
相关产品推荐

