构建用于调整超参数的网格搜索
Posted
技术标签:
【中文标题】构建用于调整超参数的网格搜索【英文标题】:Build a grid search for tuning hyperparameters 【发布时间】:2021-02-07 23:14:24 【问题描述】:我需要构建一个网格搜索来调整超参数。假设有两个范围:lambda = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
和 sigma = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
。如何构建自定义网格搜索?我创建了一个自定义 SVM 类,称为 CustomSVM()
,具有 fit()
、predict()
和 score()
方法。我想在该类上创建一个搜索网格,看看哪些参数最适合。
我想过
for x in lambda:
for y in sigma:
...
但我不知道如何继续。
【问题讨论】:
您需要提供一个最小的示例代码,我们可以将其复制并粘贴到单个文件中并运行它 @TuanTran 我创建了一个小代码来展示我对这个问题的看法。它有帮助吗?我只是不知道如何构建网格搜索来为我的CustomSVM()
挑选最好的 sigma 和 lambda
【参考方案1】:
Sklearn 有一个网格搜索类,你能用this?
from sklearn.model_selection import GridSearchCV
parameters =
'lambda': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
'sigma': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
svm_gs = GridSearchCV(customSVM, parameters)
svm_gs.fit(your.data, your.target)
我不明白为什么您的for loop
解决方案不能正常工作;您可以参考 GridSearchCV 文档以获取想法。
【讨论】:
我知道,但我不能使用 GridSearchCV @David 不使用 GridSearchCV 的原因是什么?显示的解决方案是实现目标的干净和 Pythonic(sklearnish)方式。以上是关于构建用于调整超参数的网格搜索的主要内容,如果未能解决你的问题,请参考以下文章
我应该在 SMOTE 之前还是之后执行网格搜索(用于调整超参数)?
使用超网格搜索和 10 倍 CV 调整参数后,随机森林模型的 AUC 较低
如何选取一个神经网络中的超参数hyper-parameters