gpt4 book ai didi

python - 通过 GridSearchCV 测试的仅一类折叠

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:08 25 4
gpt4 key购买 nike

在作为 SVC 包装器的自定义估算器上使用 GridSearchCV 时,出现错误:“ValueError:类数必须大于一;得到 1 个类”

自定义估算器用于将 gridsearch 参数添加到估算器并且似乎工作正常。

使用调试器,我发现确实为我的估算器提供了一个只有一类的训练集,因此出现了两种可能性:

  • 估计器应该只处理单类集

  • 要么 GridSearchCV 不应该给出 one-class-only 集合

由于我从 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))

最佳答案

正如您在问题中已经提到的,问题在于交叉验证拆分不包括二等数据。这可能是由于您的数据存在类不平衡问题,即在执行分层 n_inner_splits 折叠时,会遗漏该欠样本类。

要克服这个问题,您可以尝试以下方法之一:

1- 根据欠采样类数据的百分比和您拥有的实例数减少n_inner_splits

2- 除了将整数传递给 gridsearch 的 cv 参数外,您还可以拆分自己并将其传递给它一个可迭代的生成(训练、测试)数据,您将确保始终代表这两个类.

3- 为采样类下的这个生成/获取更多数据。

查看 cv 参数文档以了解其他解决此问题的方法 here .

关于python - 通过 GridSearchCV 测试的仅一类折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55726484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com