估算器SVR的无效参数丢失

问题描述

这是我的代码

我使用网格搜索cv进行超参数调整。但显示错误

param_grid = {"kernel" : ['linear','poly','rbf','sigmoid'],'loss' : ['epsilon_insensitive','squared_epsilon_insensitive'],"max_iter" : [1,10,20],'C' : [np.arange(0,20,1)]} 

model = gridsearchcv(estimator = svr,param_grid = param_grid,cv = 5,verbose = 3,n_jobs = -1)

m1 = model.fit(x_train,y_train)

ValueError: Invalid parameter loss for estimator SVR(C=array([ 0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19]),kernel='linear'). Check the list of available parameters with `estimator.get_params().keys()`.

解决方法

我发现的一些错误:

  • 您似乎正在指定一个loss参数和可能的值,这些参数和值只能为LinearSVR而不是SVR定义。另一方面,如果您想使用LinearSVR,则不能指定内核,因为它必须是线性的。

  • 我还注意到网格定义中的'C' : [np.arange(0,20,1)]会产生错误,因为它会导致嵌套列表。只需使用np.arange(0,1)

假设您有一个SVR,以下内容将为您工作:

from sklearn.svm import SVR
svr = SVR()

param_grid = {"kernel" : ['linear','poly','rbf','sigmoid'],"max_iter" : [1,10,20],'C' : np.arange(0,1)} 

model = GridSearchCV(estimator = svr,param_grid = param_grid,cv = 5,verbose = 3,n_jobs = -1)
m1 = model.fit(X_train,y_train)