我尝试使用StandardScaler执行缩放,并定义KNeighborsClassifier(创建缩放器和估计器的管道)
最后,我想为上面的内容创建一个网格搜索交叉验证程序,其中param_Grid将是一个字典,其中包含n个邻居作为超参数,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
但这样做会给我一个错误的说法
^{pr2}$我已经阅读了文档,但仍然不太明白错误指示了什么以及如何修复它。在
你是对的,这并不是scikit-learn完全记录在案的。(在docstring类中没有对它的引用。)
如果在网格搜索中使用管道作为估计器,那么在指定参数grid时需要使用特殊的语法。具体地说,您需要使用步骤名,后跟一个双下划线,然后是传递给估计器的参数名。一、 e
在您的情况下:
^{pr2}$应该会成功的。在
这里
knc
是管道中的命名步骤。有一个属性将这些步骤显示为字典:正如你的回溯所暗示的:
官方对此的一些引用:
相关问题 更多 >
编程相关推荐