- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望能够在 sklearn 的 RandomizedSearchCV 构造中使用管道。但是现在我认为只支持估算器。这是我希望能够执行的操作的示例:
import numpy as np
from sklearn.grid_search import RandomizedSearchCV
from sklearn.datasets import load_digits
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
# get some data
iris = load_digits()
X, y = iris.data, iris.target
# specify parameters and distributions to sample from
param_dist = {'C': [1, 10, 100, 1000],
'gamma': [0.001, 0.0001],
'kernel': ['rbf', 'linear'],}
# create pipeline with a scaler
steps = [('scaler', StandardScaler()), ('rbf_svm', SVC())]
pipeline = Pipeline(steps)
# do search
search = RandomizedSearchCV(pipeline,
param_distributions=param_dist, n_iter=50)
search.fit(X, y)
print search.grid_scores_
如果你只是这样运行,你会得到如下错误:
ValueError: Invalid parameter kernel for estimator Pipeline
在 sklearn 中有没有好的方法来做到这一点?
最佳答案
RandomizedSearchCV
,以及GridSearchCV
,做支持管道(事实上,它们独立于它们的实现,并且管道被设计等同于通常的分类器)。
问题的关键很简单,如果您认为应该搜索哪些参数。由于管道由许多对象组成(多个转换器 + 一个分类器),因此可能需要为分类器和转换器找到最佳参数。因此,您需要以某种方式区分从哪里获取/设置属性。
所以你需要做的是说你想找到一个值,比如说,不仅仅是一些抽象的 gamma
(管道根本没有),而是 管道分类器的 gamma
,在您的案例中称为 rbf_svm
(这也证明了名称的必要性)。这可以使用双下划线语法来实现,该语法在嵌套模型的 sklearn 中广泛使用:
param_dist = {
'rbf_svm__C': [1, 10, 100, 1000],
'rbf_svm__gamma': [0.001, 0.0001],
'rbf_svm__kernel': ['rbf', 'linear'],
}
关于python - sklearn : use Pipeline in a RandomizedSearchCV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28178763/
我正在尝试使用RandomizedSearchCV在随机森林上进行一些超参数优化。我将评分方法设置为平均精度。 rand_search.best_score_ 约为 0.38(对于我的数据集来说是一个
在 RandomizedSearchCv 上执行 fit() 后: tfidf = TfidfVectorizer(strip_accents=None,lowercase=False
我目前正在玩一个关于 xgboost 中超参数优化的玩具示例。在以下示例中,我将执行以下步骤: 从 sklearn 加载 iris 数据集并将其拆分为训练集和测试集。 声明一个我想探索的参数网格。 鉴
我有一些关于随机森林回归模型中的随机网格搜索的问题。我的参数网格如下所示: random_grid = {'bootstrap': [True, False], 'max
我有一些测试和训练数据,测试数据没有任何因变量。 我目前正在运行 GridSearchCV 或 RandomizedSearchCV 来查找最佳参数。 我应该将所有“测试” X 和 y 值传递到 Gr
我使用 RandomizedSearchCV 通过 10 倍交叉验证和 100 次迭代来获得最佳参数。这效果很好。但现在我还想从性能最佳的模型中获取每个预测测试数据点的概率(例如 predict_pr
我正在尝试使用 RandomizedSearchCV 来调整随机森林的超参数,但在运行代码后立即收到 PermissionError 。 初始运行没有 PermissionError (但是它确实抛出
我有一个自定义的 Python 估算器对象 (mkl_regressor)。此类对象的学习参数之一是 float 的 numpy.array。通常 sklearn 估计器对象由单个参数调整,例如 SV
我正在尝试使用 stratifiedKFold 和 RandomizedSearchCV 来实现随机森林分类器。问题是我可以看到 RandomizedSearchCV 的“cv”参数用于进行交叉验证。
我在 sklearn 中使用 RandomizedSearchCV 函数和随机森林分类器。为了查看不同的指标,我使用自定义评分 from sklearn.metrics import make_sco
我想使用RandomizedSearchCV来自 scikit-learn。在构造函数中,我可以传递 param_distributions ,即我想要优化的不同参数的分布。但还有 fit_param
我正在运行 5 倍的 RandomizedSearchCV 以便找到最佳参数。我有一个用于预测的保留集 (X_test)。我的部分代码是: svc= SVC(class_weight=class_we
我设置了以下参数: parameter_space = { 'hidden_layer_sizes': [(sp_randint.rvs(100,600,1),sp_randint.rvs(1
我设置了以下参数: parameter_space = { 'hidden_layer_sizes': [(sp_randint(100,600),sp_randint(100,600),),
我尝试使用“AUCPR”作为使用 Sklearn 的 RandomSearchCV 和 Xgboost 提前停止的评估标准,但我无法为提前停止拟合参数指定 maximize=True 。相反,eval
我正在使用管道通过 RandomizedSearchCV 执行特征选择和超参数优化。以下是代码摘要: from sklearn.cross_validation import train_test_s
我希望能够在 sklearn 的 RandomizedSearchCV 构造中使用管道。但是现在我认为只支持估算器。这是我希望能够执行的操作的示例: import numpy as np from s
假设我们正在尝试找到 RandomForestClassifier 的最佳 max_depth 参数。我们正在使用 RandomizedSearchCV : from scipy.stats impo
我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数。 我的代码如下: X_train = X_train.reshape((X_train.shape[0], 1, X_
我正在使用 RandomizedSearchCV 和 KNeighborsClassifier 来尝试预测贷款违约。 使用 RandomizedSearchCV 在理论上似乎很棒,但当我对其进行测试时
我是一名优秀的程序员,十分优秀!