如何在GridSearchCV中使用最佳参数作为分类器的参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在GridSearchCV中使用最佳参数作为分类器的参数?相关的知识,希望对你有一定的参考价值。

我有一个名为svc_param_selection(X, y, n)的函数,它返回best_param_。现在我想使用返回的best_params作为分类器的参数,如:。

parameters = svc_param_selection(X, y, 2)

from sklearn.model_selection import ParameterGrid

from sklearn.svm import SVC

param_grid = ParameterGrid(parameters)

for params in param_grid:
    svc_clf = SVC(**params)
    print (svc_clf)

classifier2=SVC(**svc_clf)

看来这里的参数不是网格..

答案

您可以使用GridSearchCV来执行此操作。这里有一个例子:

# Applying GridSearch to find best parameters
from sklearn.model_selection import GridSearchCV
parameters = [{ 'criterion' : ['gini'], 'splitter':['best','random'], 'min_samples_split':[0.1,0.2,0.3,0.4,0.5], 
           'min_samples_leaf': [1,2,3,4,5]},
          {'criterion' : ['entropy'], 'splitter':['best','random'], 'min_samples_split':[0.1,0.2,0.3,0.4,0.5],
           'min_samples_leaf': [1,2,3,4,5]} ]
gridsearch = GridSearchCV(estimator = classifier, param_grid = parameters,refit= False, scoring='accuracy', cv=10)
gridsearch = gridsearch.fit(x,y)
optimal_accuracy = gridsearch.best_score_
optimal_parameters = gridsearch.best_params_

但是对于param_gridGridSearchCV,您应该为您的分类器传递参数名称和值的字典。例如,像这样的分类器:

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier(random_state=0, presort=True, 
                                    criterion='entropy')
classifier = classifier.fit(x_train,y_train)

然后在找到GridSearchCV的最佳参数后,将它们应用于您的模型。

以上是关于如何在GridSearchCV中使用最佳参数作为分类器的参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将最佳参数(使用 GridSearchCV)从管道传递到另一个管道

使用来自 gridsearchcv 的最佳参数

ValueError 在 Scikit 中找到最佳超参数时使用 GridSearchCV 学习 LogisticRegression

使用最佳参数构建模型时 GridsearchCV 最佳分数下降

GridSearchCV 的结果作为表格

GridSearchCV 最佳超参数不会产生最佳精度