首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cross_val_score、cross_val_predict和cross_val_validate是如何处理培训、测试和验证的?

cross_val_score、cross_val_predict和cross_val_validate是如何处理培训、测试和验证的?
EN

Stack Overflow用户
提问于 2019-04-21 18:55:13
回答 2查看 1K关注 0票数 0

根据我的理解,cross_val_score, cross_val_predict, and cross_val_validate可以使用K-fold validation。这意味着训练集部分作为训练集和测试集被迭代地使用。但是,我还没有看到任何关于如何处理验证的信息。数据似乎没有分成三组--培训、验证和测试集。cross_val_score、cross_val_predict和cross_val_validate是如何处理培训、验证和测试的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-25 23:02:59

cross_val_score被用来对模型的精度进行更稳健的估计,而不仅仅是典型的列车测试分割。它做同样的工作,但重复了很多次。这种“重复”可以用许多不同的方式来完成:简历、重复简历、LOO等等。参见滑雪板用户指南中的3.1.2

如果您需要交叉验证超级参数,那么您应该运行一个嵌套交叉验证,其中一个外部循环用于评估模型的准确性,另一个内环用于获得最佳参数。该内循环将在列车和验证集中进一步分割外环的列车组。这个程序应该是这样的:

代码语言:javascript
复制
Outer loop:
    Split train - test
    Inner loop:
       Fix parameters      
       Split train in train2 - validation
       Train with train2 set
       Score with validation set
       Repeat Inner loop for all parameters
   Train with train set and best parameters from inner loop
   Score with test 
   Repeat outer loop until CV ends
   Return test scores

幸运的是,可以通过学习将GridSearchCV嵌套到cross_val_score中。

代码语言:javascript
复制
validation = GridSearchCV(estimator, param_grid)
score = cross_val_score(validation, X, y)
票数 1
EN

Stack Overflow用户

发布于 2019-04-21 19:35:03

如果过程将数据集拆分为K部件(默认情况下为3),并且执行拟合和验证K时间,那么K确实负责验证。Sklearn文档讨论了将数据集拆分为列车/测试集的问题,但不要误解名称。该测试集实际上是一个验证集。

通过使用cross_val_score,您可以调优模型超参数并获得最佳配置。

因此,一般的过程应该是(自己)将数据集划分为训练集和测试集。

使用交叉验证的培训集(调用cross_val_score),以便优化模型超参数并获得最佳配置。

然后使用测试集对模型进行评估。注意,测试集应该足够大并且代表总体,以便得到泛化误差的无偏估计。

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

https://stackoverflow.com/questions/55785764

复制
相关文章

相似问题

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