首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于GridsearchCV的特征选择

基于GridsearchCV的特征选择
EN

Stack Overflow用户
提问于 2022-07-27 11:30:24
回答 2查看 186关注 0票数 1

我试图使用GridSearchCV来优化一条管道,该管道在开始时进行特征选择,最后使用KNN进行分类。我使用我的数据集对模型进行了拟合,但是当我看到GridSearchCV找到的最佳参数时,它只给出了SelectKBest的最佳参数。我不知道为什么它没有显示出KNN的最佳参数。

这是我的密码。

加法KNN和SelectKbest

代码语言:javascript
复制
classifier = KNeighborsClassifier()
parameters = {"classify__n_neighbors": list(range(5,15)),
                           "classify__p":[1,2]}
sel = SelectKBest(f_classif)
param={'kbest__k': [10, 20 ,30 ,40 ,50]}

具有流水线和参数网格的GridsearchCV

代码语言:javascript
复制
model = GridSearchCV(Pipeline([('kbest',sel),('classify', classifier)]),
                     param_grid=[param,parameters], cv=10)

拟合模型

代码语言:javascript
复制
model.fit(X_new, y)

结果

代码语言:javascript
复制
print(model.best_params_)
{'kbest__k': 40}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-27 12:59:49

我相信这是个不正确的合并方法。试一试

代码语言:javascript
复制
param_grid={**param,**parameters}

或(Python 3.9+)

代码语言:javascript
复制
param_grid=param|parameters
票数 0
EN

Stack Overflow用户

发布于 2022-07-27 13:34:54

param_grid是一个列表时,将探索列表中每个字典生成的网格之间的不相交的联合。因此,您的搜索已经结束(1)默认的k=10选择的特性和分类器参数的每个组合,以及(2)默认分类器参数和k的每个值。最好的参数只显示k=40,这意味着拥有更多的特性,即使使用默认分类器,效果也最好。您可以检查您的cv_results_以验证。

作为dx2-66 answers,合并字典将生成您可能需要的完整网格。您也可以从一开始就定义一个字典。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73138822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档