问题标签 [grid-search]

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 回答
1004 浏览

python - 无法设置从 Numpy 数组读取的适当 dtype

我想保存数据框的一些属性并给定底层 numpy 数组的一部分,我想重建数据框,就好像我已经获取了数据框的一部分一样。如果对象列的值可以强制转换为浮点数,我想不出任何可行的方法。在真实的数据集中,我有数百万个观察值和数百列。

实际用例涉及 Pandas 与 scikit-learn 交互的自定义​​代码。我知道 scikit-learn 的最新版本与内置的 pandas 兼容,但我无法使用此版本,因为 RandomizedSearchCV 对象无法处理大参数网格(这将在未来版本中修复)。

编辑:谢谢@unutbu 准确回答我的问题的答案。在 0.16.0 之前的 scikit-learn 版本中,gridsearch 对象从 pandas 数据帧中剥离了底层的 numpy 数组。这意味着单个对象列使整个数组成为对象,并且 pandas 方法不能包装在自定义转换器中。

使用@unutbu 的答案的解决方案是使管道的第一步成为自定义的“DataFrameTransformer”对象。

在管道中,只需在构造函数中包含您的原始 df :

0 投票
1 回答
3185 浏览

scikit-learn - 在 scikit-learn 中结合递归特征消除和网格搜索

我正在尝试在 scikit-learn 中结合递归特征消除和网格搜索。正如您从下面的代码(有效)中看到的那样,我能够从网格搜索中获得最佳估计器,然后将该估计器传递给 RFECV。但是,我宁愿先做 RFECV,然后再做网格搜索。问题是,当我将选择器从 RFECV 传递给网格搜索时,它不接受它:

ValueError:估计器 RFECV 的参数引导程序无效

是否可以从 RFECV 获取选择器并将其直接传递给 RandomizedSearchCV,或者这在程序上不是正确的做法?

0 投票
2 回答
40093 浏览

python - 将 GridSearchCV 与 AdaBoost 和 DecisionTreeClassifier 一起使用

我正在尝试使用 DecisionTreeClassifier(“DTC”)作为 base_estimator 来调整 AdaBoost 分类器(“ABT”)。我想同时调整ABT和 DTC 参数,但不确定如何实现这一点 - 管道不应该工作,因为我没有将 DTC 的输出“管道”到 ABT。这个想法是在 GridSearchCV 估计器中迭代 ABT 和 DTC 的超参数。

如何正确指定调整参数?

我尝试了以下操作,这在下面产生了错误。

0 投票
1 回答
182 浏览

python - scikit - CalibratedCV 上的 GridSearchCV,以 RandomForrestClassifier 作为基本估计器

我想知道是否有办法在 CalibratedCV 中嵌入的 RandomForrestClassifier 上执行 GridSearchCV,我想优化日志丢失,所以我需要在 CalibratedCV 上进行评估,但我想更改 RandomForrest 的参数。

提前致谢

0 投票
2 回答
881 浏览

python - 在 sklearn 中制作网格搜索功能以忽略空模型

使用 python 和 scikit-learn,我想做一个网格搜索。但是我的一些模型最终是空的。如何使网格搜索功能忽略这些模型?

我想我可以有一个评分函数,如果模型为空,则返回 0,但我不确定如何。

我的数据的方式是该learner对象将选择一个C对应于空模型的对象。知道如何确保模型不为空吗?

编辑:“空模型”是指选择了 0 个要使用的功能的模型。特别是对于l1正则化模型,这很容易发生。所以在这种情况下,如果CSVM 中的 足够小,优化问题会找到 0 向量作为系数的最优解。因此predictor.coef_将是0s 的向量。

0 投票
1 回答
766 浏览

jquery - W2UI多关键词搜索

W2UI 网格

我想像在 datatables .net 中那样进行网格搜索

它使用'AND'以空格分隔的搜索文本的条件。

我的要求是不要使用搜索框旁边已经存在的高级搜索,因为它是基于特定列的。

现在在w2ui网格搜索框中我正在搜索“John”然后它应该显示1,2,3 records

然后我正在搜索“john fran”然后它应该只显示3rd record.

如何做到这一点?

我尝试按空格分割搜索框字符串并在 w2ui.js 中进行了更改,但它总是搜索搜索字符串中的最后一个单词,

请帮忙,谢谢:) :)

0 投票
1 回答
1709 浏览

python-2.7 - Scikit:如何检查对象是 RandomizedSearchCV 还是 RandomForestClassifier?

我有一些使用Grid Search创建的分类器,还有一些直接作为Random Forests创建的分类器。

随机森林返回类型 sklearn.ensemble.forest.RandomForestClassifier,以及使用 gridSearch 返回类型创建的随机森林sklearn.grid_search.RandomizedSearchCV

我正在尝试以编程方式检查估计器的类型(以决定是否需要best_estimator_特征重要性上使用),但似乎找不到这样做的好方法。

if type(estimator) == 'sklearn.grid_search.RandomizedSearchCV'是我的第一个猜测,但显然是错误的。

0 投票
1 回答
2303 浏览

machine-learning - GridSearchCV best_score_ 属性是什么意思?(该值与交叉验证数组的平均值不同)

我对结果感到困惑,可能我没有正确理解交叉验证和 GridSearch 的概念。我遵循了这篇文章背后的逻辑: https ://randomforests.wordpress.com/2014/02/02/basics-of-k-fold-cross-validation-and-gridsearchcv-in-scikit-learn/

获得的结果:

附加说明:

我使用解释变量的另一种组合(仅使用其中一些)运行它,我得到了逆问题。现在 .best_score_ 高于交叉验证数组中的所有值。

0 投票
3 回答
43707 浏览

machine-learning - GridSearchCV 打分参数:使用打分='f1' 或打分=无(默认使用准确度)给出相同的结果

我正在使用从“Mastering Machine Learning with scikit learn”一书中提取的示例。

它使用决策树来预测网页上的每个图像是广告还是文章内容。然后可以使用级联样式表隐藏被分类为广告的图像。数据可从 Internet 广告数据集公开获得:http: //archive.ics.uci.edu/ml/datasets/Internet+Advertisements,其中包含 3,279 张图像的数据。

以下是完成分类任务的完整代码:

如示例中所示,在 GridSearchCV 中使用score='f1'的结果是:

F1 SCORE 结果

使用 score =None(默认准确度度量)的结果与使用 F1 分数相同:

准确度分数结果

如果我没有错,通过不同的评分函数优化参数搜索应该会产生不同的结果。下面的案例表明,当使用score='precision'时会得到不同的结果。

使用score='precision'的结果与其他两种情况不同。“召回”等也是如此:

精确分数结果

为什么'F1'和None,默认精度,给出相同的结果??

已编辑

我同意 Fabian 和 Sebastian 的两个答案。问题应该是小的param_grid。但我只是想澄清一下,当我使用完全不同的(不是此处示例中的那个)高度不平衡的数据集 100:1(这应该会影响准确性)并使用逻辑回归时,问题就会激增。在这种情况下,“F1”和准确性也给出了相同的结果。

在这种情况下,我使用的 param_grid 如下:

我猜是参数选择也太小了。

0 投票
2 回答
4750 浏览

python - ValueError:使用 GridSearch 参数时估计器 CountVectorizer 的参数模型无效

我有一个 sklearn 管道,它使用两种类型的特征进行文本分类:由 CountVectorizer() 和 TfidfTransformer() (TfidfVectorizer()) 生成的标准 tfidf 特征和一些语言特征。我尝试将不同的 ngram 范围传递给 CountVectorizer(),然后使用 GridSearh 找到最佳 n。

这是我的代码:

(我省略了一些似乎与问题无关的行。)

但它会抛出一个错误:

TfidfVectorizer() 也是如此。

如果我将 ngram_range 直接传递给管道中的矢量化器,一切正常: ('vect', CountVectorizer(ngram_range=(1,2)))

谢谢!