【发布时间】:2018-07-21 10:55:52
【问题描述】:
我正在尝试使用 StandardScaler 执行缩放并定义一个 KNeighborsClassifier(创建缩放器和估计器的管道)
最后,我想为上面创建一个网格搜索交叉验证器,其中 param_grid 将是一个包含 n_neighbors 作为超参数和 k_vals 作为值的字典。
def kNearest(k_vals):
skf = StratifiedKFold(n_splits=5, random_state=23)
svp = Pipeline([('ss', StandardScaler()),
('knc', neighbors.KNeighborsClassifier())])
parameters = {'n_neighbors': k_vals}
clf = GridSearchCV(estimator=svp, param_grid=parameters, cv=skf)
return clf
但是这样做会给我一个错误提示
Invalid parameter n_neighbors for estimator Pipeline. Check the list of available parameters with `estimator.get_params().keys()`.
我已阅读文档,但仍然不太了解错误指示以及如何修复它。
【问题讨论】:
-
您可以尝试使用参数 = {'knn__n_neighbors': k_vals} 的代码。注意 knn 后的双 _。这没有拼错,这是正确的语法。
标签: python scikit-learn pipeline