Sklearn GridSearchCV是否会遍历估计器参数的所有可能默认选项?

scikit-learn中的算法可能有一些参数具有默认的选项范围,

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=1, **kwargs)

其中参数的默认值为”auto”,其选项包括:algorithm : {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}

我的问题是,在使用**GridSearchCV**寻找算法参数的最佳值集时,如果我不将其添加到参数列表中,GridSearchCV是否会遍历参数的所有默认选项?

例如,我想使用**GridSearchCV**来寻找**kNN**的最佳参数值,我需要检查n_neighborsalgorithm参数,是否可以只传递如下所示的值(因为algorithm参数有默认选项),

parameter_list = {'n_neighbors': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]}

还是我必须指定所有我想检查的选项?

parameter_list = {'algorithm': ['auto', 'ball_tree', 'kd_tree', 'brute'],'n_neighbors': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]}

谢谢。


回答:

不,你对参数默认值和可用选项存在误解。

查看KNeighborsClassifier的文档,参数algorithm是一个可选参数(即你在构造KNeighborsClassifier时可以选择是否指定它)。

但如果你决定指定它,那么它有可用的选项:{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}。这意味着你只能从这些给定的选项中为algorithm提供值,而不能使用其他字符串来指定algorithm。默认选项是'auto',意味着如果你不提供任何值,它将内部使用'auto'

  • 情况1:- KNeighborsClassifier(n_neighbors=3)

这里由于没有为algorithm指定值,所以它将默认使用algorithm=’auto’。

  • 情况2:- KNeighborsClassifier(n_neighbors=3, algorithm='kd_tree')

这里因为指定了算法,所以它将使用’kd_tree’

现在,GridSearchCV只会将在param_grid中指定的参数传递给估计器。所以在你的例子中,当你使用问题中的第一个parameter_list时,它只会将n_neighbors传递给估计器,而算法将仅使用默认值('auto')。

如果你使用第二个parameter_list,那么n_neighborsalgorithm都将被传递给估计器。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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