【问题标题】:How to perform hyper-paramter tunning for SVC? [closed]如何为 SVM 执行超参数调整? [关闭]
【发布时间】:2021-10-23 20:15:21
【问题描述】:

我正在尝试对我的模型执行超参数调整,但此错误一直显示

error :  Invalid parameter svc_c for estimator SVC(). Check the list of available parameters with `estimator.get_params().keys()

我正在使用以下代码:

param_grid = {'svc_c': [5, 10, 100], 
              'svc_gamma': [1,0.1,0.01,0.001],
              'svc_dgree': [1,2,3,4,5,6],
              'svc_kernel': ['rbf']}
grid = GridSearchCV(SVC(),param_grid,refit=True,verbose=3)
grid.fit(x_train_poly,y_train)

【问题讨论】:

  • 请参阅docs 了解超参数的正确拼写

标签: python machine-learning scikit-learn hyperparameters svc


【解决方案1】:

您需要为字典param_grid 使用正确的键。 kernelCgammadegree 和 ...(见 doc

试试这个:

param_grid = {'kernel': ('linear', 'rbf','poly') , 
              'C':[5, 10, 100],
              'gamma': [1,0.1,0.01,0.001], 
              'degree' : [1,2,3,4,5,6]}

grid = GridSearchCV(SVC() , param_grid , refit=True , verbose=3)
grid.fit(x_train_poly,y_train)

【讨论】:

  • 我没有运行这个,但我认为写('rbf',) 会更好,因为('rbf') 可能被解释为字符列表(所以试试“r”和“b”和“ f" 作为候选人),除非 sklearn 以某种方式处理这些问题。
  • @KotaMori,我编辑代码,查看答案,设置内核我们发送tuple,查看此链接:scikit-learn.org/stable/modules/generated/…
【解决方案2】:

正如错误消息所述,您为每个超参数设置了无效的参数名称。在这个stackoverflow question 中,显示了一种显示给定估计器的可用超参数列表的方法。然后,我建议您将代码更改为:

param_grid = {'C': [5, 10, 100], 
              'gamma': [1,0.1,0.01,0.001],
              'degree': [1,2,3,4,5,6],
              'kernel': ['rbf']}

请检查那些超参数是否真的包含在列表中 estimator.get_params().keys() 返回。

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2021-12-08
    • 2016-11-20
    • 2020-12-30
    • 1970-01-01
    • 2021-09-19
    • 2021-11-10
    • 2020-08-07
    • 2020-11-17
    相关资源
    最近更新 更多