当前位置: 首页 > 知识库问答 >
问题:

Scikit-learn中KNN分类器的网格搜索参数和交叉验证数据集

金飞
2023-03-14

1)在我读过的大多数机器学习入门页面中,似乎都在说你需要一个训练集、一个验证集和一个测试集。根据我的理解,交叉验证允许你结合训练和验证集来训练模型,然后你应该在测试集上测试它以得到一个分数。然而,我在论文中看到,在很多情况下,您可以在整个数据集上交叉验证,然后报告CV得分作为准确性。我知道在一个理想的世界里,你会想要在不同的数据上进行测试,但如果这是合法的,我想要在我的整个数据集上交叉验证并报告那些分数

2)开始流程

定义我的KNN分类器如下

knn = KNeighborsClassifier(algorithm = 'brute')
clf = GridSearchCV(knn, parameters, cv=5)
clf.fit(X,Y)
clf.best_params_
clf.score(X,Y)
knn2 = KNeighborsClassifier(n_neighbors = 14, algorithm='brute')
cross_val_score(knn2, X, Y, cv=5)

现在我知道数据已经被交叉验证了,但我不知道使用CLF.FIT找到最佳参数,然后使用cross_val_score和一个新的knn模型是否合法?

3)我明白“正确”的做法如下

拆分为X_train,X_test,Y_train,Y_test,Scale train sets->对测试集应用转换

knn = KNeighborsClassifier(algorithm = 'brute')
clf = GridSearchCV(knn, parameters, cv=5)
clf.fit(X_train,Y_train)
clf.best_params_
clf.score(X_test,Y_test)

提前致谢

共有1个答案

汪栋
2023-03-14

>

  • 是的,您可以对您的整个数据集进行CV这是可行的,但我还是建议您至少将您的数据分成两个集一个用于CV和一个用于测试

    code>.score函数应该根据文档返回一个float值,该值是最佳估计器的得分(这是通过拟合GridSearchCV得到的最佳得分估计器)在给定的X,Y上的得分

    希望这能让事情变得更清楚:)

  •  类似资料:
    • 本文向大家介绍scikit-learn 使用交叉验证训练分类器,包括了scikit-learn 使用交叉验证训练分类器的使用技巧和注意事项,需要的朋友参考一下 示例 使用虹膜数据集: 数据分为训练集和测试集。要做到这一点,我们使用train_test_split效用函数来分割双方X和y(数据和目标矢量)用随机选择train_size=0.75(训练集包含数据的75%)。 训练数据集被输入到k最近邻

    • 根据scikit-learn的文档 你觉得呢?

    • 问题内容: 我想知道是否有更好的内置方法来进行网格搜索并在单个管道中测试多个模型。当然,模型的参数会有所不同,这使我很难弄清楚。这是我所做的: 但是,此方法仍在每个分类器中提供最佳模型,并且未在分类器之间进行比较。 问题答案: 可以使用‘hyperopt’库,而不是使用Grid Search进行超参数选择。 请查看此页面的2.2节。在上述情况下,可以使用表达式在各种管道中进行选择,然后分别为每个管

    • 网格搜索 这里的网格指的是不同参数不同取值交叉后形成的一个多维网格空间。比如参数a可以取1、2,参数b可以取3、4,参数c可以取5、6,那么形成的多维网格空间就是: 1、3、5 1、3、6 1、4、5 1、4、6 2、3、5 2、3、6 2、4、5 2、4、6 一共2*2*2=8种情况 网格搜索就是遍历这8种情况进行模型训练和验证,最终选择出效果最优的参数组合 用法举例 # coding:ut

    • 问题内容: 当我将以下代码与大小为(952,144)的数据矩阵和大小为(952)的输出向量一起使用时,度量标准将返回负值,这是意外的。你有什么主意吗? 则所有值均为负。 问题答案: 试图解决这一问题,因此请提供David和larsmans在评论部分雄辩地描述的答案: 是的,这应该发生。实际的MSE只是您获得的号码的肯定版本。 统一评分API始终使得分最大化,因此为了使统一评分API正常工作,否定了

    • 问题内容: 是否可以在没有交叉验证的情况下使用GridSearchCV?我正在尝试通过网格搜索优化KMeans聚类中的聚类数量,因此我不需要或想要交叉验证。 该文档也使我感到困惑,因为在fit()方法下,它有一个用于非监督学习的选项(例如,将None用于非监督学习)。但是,如果您想进行无监督学习,则需要在没有交叉验证的情况下进行学习,而且似乎没有摆脱交叉验证的选择。 问题答案: 经过大量搜索,我能