估算器管道

时间:2017-07-23 04:21:43

标签: python scikit-learn

我正在尝试使用sklearn实现一个SGDClassifier,但是我收到了这个错误:

ValueError: Invalid parameter loss for estimator Pipeline. Check the list of available parameters with `estimator.get_params().keys()`.

这是我的代码:

pipeline = Pipeline([
 ('clf', SGDClassifier())
])

parameters = {
    'seed': [0],
    'loss': ('log', 'hinge'),
    'penalty': ['l1', 'l2', 'elasticnet'],
    'alpha': [0.001, 0.0001, 0.00001, 0.000001]
}

score_func = make_scorer(metrics.f1_score)

grid_search = GridSearchCV(pipeline, parameters, n_jobs=3,
verbose=1, scoring=score_func)

grid_search.fit(X, Y)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

来自User's Guide

  

可以使用< estimator> __<参数>来访问管道中估算器的参数。语法

所以试试这个:

parameters = {
    'clf__seed': [0],
    'clf__loss': ('log', 'hinge'),
    'clf__penalty': ['l1', 'l2', 'elasticnet'],
    'clf__alpha': [0.001, 0.0001, 0.00001, 0.000001]
}

答案 1 :(得分:0)

  

这将显示确切的键,用于引用管道中的参数

pipeline.get_params().keys()