python - RandomizedSearchCV 是否自动包含传递给构造函数的默认模型参数?
问题描述
假设我创建了一个RandomizedSearchCV
这样的:
searcher = model_selection.RandomizedSearchCV(estimator = RandomForestClassifier(),
param_distributions = random_grid,
n_iter = 20, # Number of parameter combinations to try
cv = 3, # Number of folds for k-fold validation
n_jobs = -1) # Use all processors to compute in parallel
search = searcher.fit(x_train, y_train)
search.best_params_
n_iter
告诉我们搜索将测试多少个组合。对我来说,知道作为 20 种组合的一部分或除此之外,还包括默认模型参数是非常重要的。有谁知道这是真的还是假的?
解决方案
他们不是(可以说,如果是这样的话,那就太奇怪了)。
尝试的参数组合的详细值在cv_results_
拟合RandomizedSearchCV
对象的属性中返回。改编文档中的示例(使用默认值n_iter = 10
),我们得到:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform
iris = load_iris()
logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
random_state=0)
distributions = dict(C=uniform(loc=0, scale=4),
penalty=['l2', 'l1'])
clf = RandomizedSearchCV(logistic, distributions, random_state=0)
search = clf.fit(iris.data, iris.target)
search.cv_results_
您可以直接检查由 返回的字典search.cv_results_
,也可以将其导入 pandas 数据框以获得更紧凑的表示:
import pandas as pd
df = pd.DataFrame.from_dict(search.cv_results_)
df['params']
# result:
0 {'C': 2.195254015709299, 'penalty': 'l1'}
1 {'C': 3.3770629943240693, 'penalty': 'l1'}
2 {'C': 2.1795327319875875, 'penalty': 'l1'}
3 {'C': 2.4942547871438894, 'penalty': 'l2'}
4 {'C': 1.75034884505077, 'penalty': 'l2'}
5 {'C': 0.22685190926977272, 'penalty': 'l2'}
6 {'C': 1.5337660753031108, 'penalty': 'l2'}
7 {'C': 3.2486749151019727, 'penalty': 'l2'}
8 {'C': 2.2721782443757292, 'penalty': 'l1'}
9 {'C': 3.34431505414951, 'penalty': 'l2'}
从那里可以清楚地看出,for的默认值未包含在搜索网格中。C=1.0
LogisticRegression
如果您有任何理由使用其默认参数评估模型的性能,您应该单独进行 - 可以说它非常简单(只需 2 行代码)。
推荐阅读
- iframe - 多个 iFrame 结束侦听器事件仅适用于 Embedded Vimeo Link 上的第一个视频
- ruby-on-rails - Raect js:尽管在控制台中有错误的凭据和未经授权的状态,但仍然登录
- javascript - 在 AM Charts JS 中获取给定 X 值的 Y 值
- c++ - 由于链接错误,无法使用 Pistache.io 构建 C++ 程序
- pandas - 找出 DataFrame 列中有多少常见的缺失 (nan) 值
- r - quanteda - 计算前 n 个特征的稀疏比例
- flutter - 模拟 DateTime 参数输入
- html - 创建一个用 CSS 显示为无限且响应式的选取框
- javascript - 如何根据特定字段进行过滤
- python - 英特尔实感 Mac OS 安装