在作为 SVC 包装器的自定义估计器上使用 GridSearchCV 时,我收到错误消息:“ValueError: The number of classes have to be greater than one; got 1 class”
自定义估算器用于将网格搜索参数添加到估算器中,并且似乎工作正常。
使用调试器,我发现确实给我的估计器提供了一个只有一类的训练集,所以出现了两种可能性:
估计器应该处理仅一类集
GridSearchCV 不应该只给出一个类集
当我从 SVC.fit 调用中得到一个错误,并且 SVC 似乎不应该接收仅一类集合时,我认为这是第二个选项。但是,我查看了 GridSearchCV 实现,但没有找到任何地方可以检查是否存在仅一类折叠或为什么会失败...
我在交叉验证中使用了网格搜索来进行嵌套交叉验证:
gs = GridSearchCV(clf.gs_clf.get_gs_clf(), parameter_grid, cv=n_inner_splits, iid=False)
gs.fit(*clf.get_train_set(X, y, train_index))