关于#调优#的问题,如何解决?

大家好,我看到一篇超参数调优的文章中使用了

tuner <- tnr("grid_search", resolution = 5)

进行网格搜索,最近在学这个。我敲的代码如下:

task = tsk("iris")
split = partition(task, ratio = 0.8)
task$set_row_roles(split$test, "holdout")    
 
#(2)选择学习器,同时指定部分超参数,需要调参的超参数用 to_tune()设定搜索空间:
learner = lrn("classif.svm",
              type = "C-classification",    
              kernel = "radial",        
              cost = to_tune(0.1, 10),      
              gamma = to_tune(0, 5))        
#(3)对 cost, gamma 执行5 × 5网格调参,性能指标选择分类错误率,采用5 折交叉验证:
instance = tune(
  method = "grid_search",
  task = task,
  learner = learner,
  resampling = rsmp("cv", folds = 5),
  measure = msr("classif.ce"),
resolution=5)       
#(4)提取超参数调参结果
instance$result # 调参结果

这样的代码报错,然后我又把method和resolution去掉,改为

tnr("grid_search", resolution = 5)

这种成立,大家知道具体是怎么一回事吗?请专家多指导

根据您提供的的信息,我注意到在原始文章中使用的是"tuner <- tnr("grid_search", resolution = 5)"进行网格搜索,而您在代码中省略了"tuner"对象,直接使用了"tnr"。这可能是导致错误的原因之一。
在Tunes包中,函数"tnr"用于创建Tunes对象,而不是执行网格搜索。要执行网格搜索,您需要使用"tune"函数,并将"method"参数设置为"grid_search"。因此,在您的代码中,应该使用以下代码:

task = tsk("iris")  
split = partition(task, ratio = 0.8)  
task$set_row_roles(split$test, "holdout")  
   # (2)选择学习器,同时指定部分超参数,需要调参的超参数用 to_tune()设定搜索空间:  
learner = lrn("classif.svm",  
              type = "C-classification",      
              kernel = "radial",          
              cost = to_tune(0.1, 10),        
              gamma = to_tune(0, 5))          
   # (3)对 cost, gamma 执行5 × 5网格调参,性能指标选择分类错误率,采用5 折交叉验证:  
instance = tune(  
  method = "grid_search",  
  task = task,  
  learner = learner,  
  resampling = rsmp("cv", folds = 5),  
  measure = msr("classif.ce"),  
  resolution = 5)         
   # (4)提取超参数调参结果  
instance$result

这样,您应该能够成功执行网格搜索并获取调参结果。请注意,"resolution"参数在这种情况下是不必要的,因为您已经在"learner"中设置了搜索空间。