使用 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_jobs
和 verbose
):
grid_search = GridSearchCV(estimator = svr_gs, param_grid = param,
cv = 3, n_jobs = -1, verbose = 2)
verbose
表示您会看到一些关于您的进程进度的输出。
n_jobs
是已用内核的数量(-1 表示您可用的所有内核/线程)
【讨论】:
以上是关于使用 GridSearchCv 优化 SVR() 参数的主要内容,如果未能解决你的问题,请参考以下文章
使用 scikit-learn 对 SVR 进行递归特征消除和网格搜索
如何在 Python 中找到 GridSearchCV 的所有参数?