gpt4 book ai didi

machine-learning - 评估替代分类器时,RandomizedSearchCV 在 Pipeline 中不起作用

转载 作者:行者123 更新时间:2023-11-30 09:15:19 24 4
gpt4 key购买 nike

在 Scikit Learn 中,RandomizedSearchCV 可用于评估管道中的不同参数,但仅限于分类器共享相似/相同参数的某些情况。当您为不同的分类器传递参数 block 时,当 GridSearchCV 成功时,它会失败。

您会在下面的代码中注意到,网格搜索和随机搜索的问题设置是相同的,但只有随机搜索失败。

numpy.random.seed(52)
MY_RAND_SEED=numpy.random.seed(52)


pipe = Pipeline([
('imputer', SimpleImputer(strategy='median')),
('scaler' , StandardScaler()),
('classify', LogisticRegression())
])

X, y = make_classification(n_samples= 500, n_features=58, n_redundant=13, n_informative=7, n_clusters_per_class=2)

param_grid_linear = [
{'classify' : [LogisticRegression(),],
'classify__penalty' : ['l1', 'l2'],
'classify__C' : numpy.logspace(-4, 4, 50),
'classify__solver' : ['liblinear']},
{'classify' : [LogisticRegression(),],
'classify__penalty' : ['l2'],
'classify__C' : numpy.logspace(-4, 4, 50),
'classify__solver' : ['lbfgs']},
{'classify': [SVC(),],
'classify__kernel': ['linear',],
'classify__C': numpy.linspace(0.001,200, 10),},
]


innercv=StratifiedKFold(n_splits=5, shuffle=True, random_state=numpy.random.seed(52))
gridA = GridSearchCV(pipe, param_grid_linear, scoring='accuracy', iid=False, verbose=1, n_jobs=12)
gridA.fit(X, y)
print("finished grid search")

gridB = RandomizedSearchCV(pipe, param_grid_linear, scoring='accuracy', n_iter=5, iid=False, verbose=1, n_jobs=12)
gridB.fit(X, y)

最佳答案

显然,通常只传递字典列表作为参数 {dict, dict, dict},但是要执行我上面建议的操作,需要传递字典列表列表,目前仅 GridSearchCV 接受该列表。RandomizedSearchCV 现在不接受这一点,但会在 sklearn 的 future 版本中接受。以下是我在 GitHub 上收到的回复:

来自:Thomas J Fan日期:2019 年 8 月 14 日星期三晚上 7:13

这个问题已在 #14549 中解决此功能尚未发布,但您可以通过安装 scikit-learn 的 nightly build 来尝试:pip install --pre -f https://sklearn-nightly.scdn8.secure.raxcdn.com scikit学习

关于machine-learning - 评估替代分类器时,RandomizedSearchCV 在 Pipeline 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57502137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com