使用 GridSearchCv 优化 SVR() 参数

Posted

技术标签:

【中文标题】使用 GridSearchCv 优化 SVR() 参数【英文标题】:Optimizing SVR() parameters using GridSearchCv 【发布时间】:2019-12-21 00:52:15 【问题描述】:

我想调整“SVR()”回归函数的参数。它开始处理并且不会停止,我无法找出问题所在。我正在使用 SVM 回归函数 SVR() 预测参数。使用 Python 中的默认值时结果不好。所以我想尝试使用“GridSearchCv”对其进行调整。最后一部分“grids.fit(Xtrain,ytrain)”开始运行而没有给出任何错误并且不会停止。 SVR() tunning using GridSearch 代码:

从 sklearn.model_selection 导入 GridSearchCV。

param = 'kernel' : ('linear', 'poly', 'rbf', 'sigmoid'),'C' : [1,5,10],'degree' : [3,8],'coef0' : [0.01,10,0.5],'gamma' : ('auto','scale'),

modelsvr = SVR(),

grids = GridSearchCV(modelsvr,param,cv=5)

grids.fit(Xtrain,ytrain)

它继续处理而不停止。

【问题讨论】:

【参考方案1】:

是的,你是对的。当我尝试为 SVR() 运行 GridsearchCV 时,我遇到了同样的情况。可能的原因是,1)您的处理器内存(RAM)必须更少,2)训练数据样本量更大,由于您的处理器内存不足,因此花费更多时间运行 Gridsearch 的机会相同,因此作业运行没有任何错误时间会更多。

供您参考:我使用 16GB RAM 内存空间运行了 Gridsearch,训练样本大小为 30K,完成运行用了 210 分钟。所以,这里必须要有耐心。

分析愉快!!

【讨论】:

【参考方案2】:

也许您应该在 GridSearch 中再添加两个选项(n_jobsverbose):

grid_search = GridSearchCV(estimator = svr_gs, param_grid = param, 
                      cv = 3, n_jobs = -1, verbose = 2)

verbose 表示您会看到一些关于您的进程进度的输出。

n_jobs 是已用内核的数量(-1 表示您可用的所有内核/线程)

【讨论】:

以上是关于使用 GridSearchCv 优化 SVR() 参数的主要内容,如果未能解决你的问题,请参考以下文章

调整 SVR 的超参数 [关闭]

使用 GridSearchCV 进行目标缩放

使用 scikit-learn 对 SVR 进行递归特征消除和网格搜索

如何在 Python 中找到 GridSearchCV 的所有参数?

Sklearn.model_selection GridsearchCV ValueError: C <= 0

SVR预测基于混沌灰狼优化支持向量机回归预测SVR模型matlab源码