GridSearchCV是否在计算使用rbf核和不同次数的SVC?

我正在运行一个使用OneVsRestClasssiferSVC作为估计器的GridSearchCV。这是我的PipelineGridSearchCV参数的设置:

pipeline = Pipeline([    ('clf', OneVsRestClassifier(SVC(verbose=True), n_jobs=1)),    ])parameters = {    "clf__estimator__C": [0.1, 1],    "clf__estimator__kernel": ['poly', 'rbf'],    "clf__estimator__degree": [2, 3],}grid_search_tune = GridSearchCV(pipeline, parameters, cv=2, n_jobs=8, verbose=10)grid_search_tune.fit(train_x, train_y)

根据SVC的文档,degree参数仅被poly核使用:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

degree : int, optional (default=3)

多项式核函数(’poly’)的次数。其他所有核函数忽略此参数。

但是,当我查看GridSearchCV的输出时,似乎它正在为每个使用rbf核和不同degree参数值的SVC配置进行不同的运行。

[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=2[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=2[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=2[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=2[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=3[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=3[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=3[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=3

当核设置为rbf时,不应该忽略所有degree值吗?


回答:

这里显示的输出只是GridSearchCV传递给内部估计器(即SVC)的不同参数组合。但它们是否被使用取决于SVC。在这种情况下,SVC不会抛出任何错误,但也不会使用degree。你应该打印出所有你怀疑的参数组合的分数。它们应该是相等的。这将告诉你degree参数未被使用。

注意:请确保设置GridSearchCVrandom_state以重复测试。

解释:GridSearchCV的工作只是传递参数,将训练数据传递给估计器进行拟合,然后使用测试数据进行评分,并返回产生最佳分数的参数组合。

当向估计器传递不兼容的参数组合时,是否忽略参数或引发错误取决于实现方式。

例如,在LogisticRegression中有两个参数:

penalty : str, ‘l1’ or ‘l2’, default: ‘l2’          用于指定惩罚中使用的范数。solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}, default: ‘liblinear’.          用于优化问题的算法。        ‘newton-cg’, ‘lbfgs’和‘ sag’只能处理L2惩罚。 

如你所见,如果我使用l1惩罚和newton-cg求解器,会导致不兼容。因此,估计器可能会完全忽略惩罚参数或抛出错误。在这种情况下,它会抛出错误。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注