Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 如何在GridSearchCV中使用最佳参数作为分类器的参数?_Machine Learning_Scikit Learn_Grid Search - Fatal编程技术网

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

Machine learning 如何在GridSearchCV中使用最佳参数作为分类器的参数?,machine-learning,scikit-learn,grid-search,Machine Learning,Scikit Learn,Grid Search,我有一个名为svc_param_selection(X,y,n)的函数,它返回best_param。 现在我想使用返回的最佳_参数作为分类器的参数,如: 这里的参数似乎不是网格。您可以使用GridSearchCV执行此操作。这里有一个例子: # Applying GridSearch to find best parameters from sklearn.model_selection import GridSearchCV parameters = [{ 'criterion' : ['g

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


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

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

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

然后,通过
GridSearchCV
找到最佳参数后,您可以将它们应用到您的模型上。

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

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

然后,通过
GridSearchCV
找到最佳参数后,将其应用于模型。

@Ben在gridsearch开始时,您可以在参数网格外(如果只有一种分类方法要检查)或参数网格内指定分类器。我只检查了“里面”的箱子

首先,我在参数网格中设置“分类器”键。这是你最终需要要求的关键

param_grid = [
    {'classifier' : [LogisticRegression()],
    ...
    },
    {'classifier' : [RandomForestClassifier()],
    }
]
例如,
gridsearch.best_params.
的结果是:

{'classifier': RandomForestClassifier(criterion='entropy', max_depth=2, n_estimators=2),
 'classifier__criterion': 'entropy',
 'classifier__max_depth': 2,
 'classifier__min_samples_leaf': 1,
 'classifier__n_estimators': 2}
然后询问字典
gridsearch.best_params\u
以获取您称之为
分类器的密钥

clfBest=clfGridSearchBest.best_参数_['classifier']

clfBest:
RandomForestClassifier(标准='熵',max_depth=2,n_估计器=2)


现在只需调整clfBest。

@Ben在gridsearch开始时,您可以在param_网格外部(如果您只有一种分类方法要检查)或在param_网格内部指定分类器。我只检查了“里面”的箱子

首先,我在参数网格中设置“分类器”键。这是你最终需要要求的关键

param_grid = [
    {'classifier' : [LogisticRegression()],
    ...
    },
    {'classifier' : [RandomForestClassifier()],
    }
]
例如,
gridsearch.best_params.
的结果是:

{'classifier': RandomForestClassifier(criterion='entropy', max_depth=2, n_estimators=2),
 'classifier__criterion': 'entropy',
 'classifier__max_depth': 2,
 'classifier__min_samples_leaf': 1,
 'classifier__n_estimators': 2}
然后询问字典
gridsearch.best_params\u
以获取您称之为
分类器的密钥

clfBest=clfGridSearchBest.best_参数_['classifier']

clfBest:
RandomForestClassifier(标准='熵',max_depth=2,n_估计器=2)


现在只需调整clfBest。

使用您在问题标题中提到的选项!然后,您甚至不需要创建自定义函数
svc_param_selection(X,y,n)
也不需要在参数之间循环!Scikit学习的目的就是为了这个!使用您在问题标题中提到的!然后,您甚至不需要创建自定义函数
svc_param_selection(X,y,n)
也不需要在参数之间循环!Scikit学习的目的就是为了这个!我如何准确地应用它们?是否有一种优雅的方法来传递参数?如何准确地应用它们?是否有一种优雅的方法来传递参数?