You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用KNN与随机森林构建集成模型时Pipeline参数错误的解决方法

问题解决:GridSearchCV参数命名错误修正

错误根源在于你定义网格搜索参数时,没正确匹配Pipeline中嵌套模型的层级结构。KNN和RandomForest是放在名为regressor的VotingClassifier步骤里的,所以参数名必须加上regressor__前缀,格式为regressor__子模型名__参数名。

修改后的完整代码

steps = [('scaler', StandardScaler()),
         ('regressor', VotingClassifier(estimators=[
             ('knn', KNeighborsClassifier()), 
             ('clf', RandomForestClassifier())]))]
pipeline = Pipeline(steps)

# 修正参数命名,添加regressor__前缀
parameters = [
    {'regressor__knn__n_neighbors': np.arange(1, 50)}, 
    {
        'regressor__clf__n_estimators': [10, 20, 30],
        'regressor__clf__criterion': ['gini', 'entropy'],
        'regressor__clf__max_features': [5, 10, 15],
        'regressor__clf__max_depth': ['auto', 'log2', 'sqrt', None]
    }
]

X_train, X_test, y_train, y_test = train_test_split(X, y.values.ravel(),
                                                    test_size=0.3, random_state=65)
cv = GridSearchCV(pipeline, param_grid=parameters)
cv.fit(X_train, y_train)
y_pred = cv.predict(X_test)

核心说明

  • 嵌套模型的参数必须遵循外层步骤名__子模型名__参数名的层级规则,Pipeline会通过这个路径定位到对应的子模型参数。
  • 要是不确定参数的正确命名,可运行print(pipeline.get_params().keys())查看所有可用参数列表,从中找到对应子模型的参数名。

内容的提问来源于stack exchange,提问作者Hamza Abbasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:15:44