问题标签 [gridsearchcv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
23 浏览

python-3.x - Python:为什么我的模块没有通过 exec() 语句实例化对象?

我从 sklearn.model_selection 库创建了我自己版本的 GridSearchCV 模块。我的版本包括逐个迭代每个参数,而不是寻找所有可能的组合。例如对于 SVR 模型,如果我们定义如下三个参数:

该算法将首先找到一个最佳伽马系数(十个)。然后它转移到用给定的 gamma 值分配 C 参数。经过十次迭代后,它移动到 epsilon 并使用给定的一组 [gamma, C] 参数分配最佳 epsilon 值。这给了我们总共 30 个组合来检查而不是 1000 (10*10*10)。

我想将我的 opt_grid_search 对象导入到我的项目中,如下所示:

from own_udf_functions import show_description, opt_grid_search

对象的代码以创建将要优化的对象的动态语句开头:

exec_string = 'opt_object = ' + object_name + '(' + def_params + ')'

例如返回:

opt_object = SVR(kernel = 'rbf')

但是,当我尝试在另一个脚本中使用代码时,如下所示:

出现以下错误:

似乎 opt_grid_search 函数没有执行以下代码行:

opt_object = SVR(kernel = 'rbf')

并且实际上并未创建名为 opt_object 的对象。

我认为这与课程有关,但我想请您帮助我更好地了解此错误中实际发生的情况。我认为这是一项至关重要的知识,可以帮助我编写更多的“pythonic”代码,而不是在每个代码中定义所有函数。

其次,请让我知道这种优化是否也有意义,或者 GridSearch 是否需要遍历所有可能的组合。

我试图让这个描述尽可能简短,但是如果你想查看/需要它作为参考,我的代码可以在下面访问:

https://github.com/markoo26/own-udf-functions

0 投票
1 回答
390 浏览

python-3.x - 为什么在 GridSearchCV 中使用 StandardScaler 时会得到不同的结果?

我想通过 GridSearchCV 优化 SVM 的超参数。但是最佳估计器的得分与运行具有最佳参数的 svm 时的得分有很大不同。

结果如下:

最好成绩:0.784

最佳估计分数:0.6991

最佳参数得分:0.7968

我不明白为什么最佳估计器和 svm 的分数不同?以下哪个结果是正确的测试精度?为什么 0.6991 的 Best estimator 的得分这么差?我做错了什么吗?

0 投票
2 回答
3371 浏览

python - 如果我使用 GridsearchCV,如何在 Xgboost 中使用 model.evals_result()?

我正在使用 xgboost 回归器,如果我使用的是 GridsearchCV,我有一个关于如何使用 model.evals_result() 的问题

我知道如果我不使用 Gridsearch,我可以使用下面的代码得到我想要的

但是,如果我在我的代码中使用 GridsearchCV(见下文),我将无法获得 evals_result()。

任何线索?

现在当我运行 results = gbm.evals_result() 我得到这个错误

0 投票
1 回答
1308 浏览

scikit-learn - 使用 Gridsearch SKLEARN 在管道中进行 Adaboost

我想使用带有 LinearSVC 的 AdaBoostClassifier 作为基本估计器。我想对 LinearSVC 中的一些参数进行网格搜索。我还必须扩展我的功能。

出现以下错误:

没有 AdaBoostClassifier 管道正在工作,所以我认为有问题。

0 投票
3 回答
6995 浏览

scikit-learn - GridSearchCV 估计器 LogisticRegression 的参数 gamma 无效

我需要对下面列出的 Logistic 回归分类器的参数执行网格搜索,使用召回进行评分和交叉验证 3 次。

数据位于 csv 文件 (11,1 MB) 中,此下载链接为:https ://drive.google.com/file/d/1cQFp7HteaaL37CefsbMNuHqPzkINCVzs/view?usp=sharing

我有grid_values = {'gamma':[0.01, 0.1, 1, 10, 100]} 我需要在逻辑回归中应用惩罚 L1 e L2

我无法验证分数是否会运行,因为我有以下错误:估计器 LogisticRegression 的参数 gamma 无效。使用 来检查可用参数列表estimator.get_params().keys()

这是我的代码:

我从 .cv_results_ 中期望,我应该在这里可用的每个参数组合的平均测试分数:mean_test_precision_score 但不确定

输出为:ValueError:估计器 LogisticRegression 的参数 gamma 无效。使用 来检查可用参数列表estimator.get_params().keys()

0 投票
1 回答
168 浏览

machine-learning - 如何在 Scikit 中自定义 GridSearchCV 的指标 学习调整特定类?

我在 ML 中有一个用例,其中我有 2 个类,0 和 1 用于给定文本。

  • Class-0:可以承受一些错误分类
  • Class-1:非常重要,不能承受任何错误分类

两个类的样本都存在巨大的不平衡,0 类大约 30000 个,1 类只有 1000 个

在进行训练测试拆分时,我根据标签对拆分进行分层,这样,每个标签类保持 70% 训练和 30% 测试的比例。

我想以这样的方式调整参数,Precision或者Recall为 class-1 改进。我尝试使用“f1_macro”、“precision”、“recall”作为单独的指标,并将所有指标组合起来使用 GridSearchCV 进行调整,但由于大多数样本为 Class-0,因此它的帮助较小。

我正在探索减少 0 类数据的更安全的方法,尽管我们可以减少的程度很小,无论如何,即使没有调整或使用任何参数,0 类的 f1 分数总是高于 98%。

所以我关心的只是调优class-1

您能否建议,也许是一个定制的可调用指标,使其仅关注 Class-1 的精度、召回率或 F1 分数?

我正在使用 scikit-learn 最新的稳定版本。

类似的问题在这里,作者正在尝试使用它被建议尝试自定义指标来调整 Class-1 的 F1 分数Neural Networks (MLP)Keras
只是没有提到如何。
可以在这里回答 Scikit-Learn 的人,也可以回答下面的 Keras 链接。 通过 RandomizedSearchCV 在 Keras (MLP) 中调整超参数

0 投票
1 回答
255 浏览

python - 如何使用带有 SVC 估计器的 OneVsRestClassifier 的 GridSearchCV?

我正在尝试将 OneVsRestClassifier 与 SVC 一起用于图像的多分类问题 - 我从 CellProfiler 获得了图像的数字特征。我想使用 GridSearchCV 来查找要使用的超参数,但我被卡住了。

有人对此有解决方案/建议吗?

我已经阅读了谷歌,但似乎我无法解决我的问题。

0 投票
1 回答
10651 浏览

gbm - 在 python 中使用 gridsearchcv 进行梯度提升分类器的参数调整

我正在尝试在GradientBoostingClassifier()gridsearchcv 的帮助下运行。对于每个参数组合,我还需要表格格式的“Precison”、“recall”和准确性。

这是代码:

我得到错误:

0 投票
2 回答
6424 浏览

python - GridSearchCV 的结果作为表格

我在带有 RBF 内核的 SVM 上进行了网格搜索 + 交叉验证,以使用 GridShearchCV 类找到参数 C 和 gamma 的最佳值。现在我想以表格格式获得结果,例如

其中单元格包含这两个参数值的准确度得分。

或者至少,如果第一个解决方案是不可能的,那么更简单的事情就像

我对 Python 不是很熟练,所以我不知道从哪里开始。你能给我一些方法来做这种表示吗?最好的解决方案是将表格作为图表,但在控制台中以这些格式进行简单打印就可以了。先感谢您。

0 投票
0 回答
270 浏览

python - 使用 GridsearchCV 时访问 validation_data Keras

我想建立一个使用 GridsearchCV 进行参数调整的管道。我的模型是一个(二进制)分类器,我使用 Keras Sequential() 构建了它。

由于我正在处理一个倾斜数据集(大约 6/7 个标签为 0,剩下的 1/7 部分数据集用 1 标记)我添加了一个回调,用于计算每个时期结束时的 f1、召回率和精度指标,我想用它作为指标来验证我的模型。

为此,我在 Keras 中使用了一个回调,它需要在我的模型的 fit() 实例中指定我的验证数据集。反过来,这使得访问验证​​集和使用 GridsearchCV 变得非常困难。

我设法通过构建一种 DIY cv 程序来克服这个问题,但我想知道这是否可以结合 GridsearchCV 更有效地实现。这是我的代码:

设置不同的分类阈值

INPUT:x,NN 学习产生的预测向量 thr,我们用来将预测分类为 0 或 1 类的阈值。OUTPUT:包含 0 和 1 的向量,预测消息的标签

然后我为我的指标创建回调:

然后我使用以下方法创建模型:

现在我希望优化的部分代码:

有没有办法使用 GridsearchCV 封闭这些循环,并可能包含更多交叉验证部分的参数?

提前感谢您的阅读和帮助。