首页 > 解决方案 > 如何在 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)

似乎参数不是这里的网格..

标签: machine-learningscikit-learngrid-search

解决方案


您可以使用 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_gridof GridSearchCV,您应该为您的分类器传递参数名称和值的字典。例如这样的分类器:

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

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


推荐阅读