首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将数据分成3部分: Python培训(70%)、验证(15%)和测试(15%),每个部分都有相似的目标率?

如何将数据分成3部分: Python培训(70%)、验证(15%)和测试(15%),每个部分都有相似的目标率?
EN

Data Science用户
提问于 2020-02-04 03:49:34
回答 2查看 9.5K关注 0票数 4

我正在做一个公司项目,我需要将数据划分为三个部分--培训、验证和测试(保留)。

是否有人知道我如何将上述数据分成3部分,每个部分将有相似的响应变量(目标率)-(分类的精度相似,回归的均数类似)。

我知道如何使用SKLEARN中的train_test_split函数将数据分成3部分

代码语言:javascript
代码运行次数:0
运行
复制
from sklearn.model_selection import train_test_split

x, x_test, y, y_test = train_test_split(xtrain,labels,test_size=0.2,train_size=0.8)
x_train, x_cv, y_train, y_cv = train_test_split(x,y,test_size = 0.25,train_size =0.75)

但这并没有给出类似的目标率,有人能帮我吗?

EN

回答 2

Data Science用户

回答已采纳

发布于 2020-02-04 10:27:57

对于分类,可以使用stratify参数:

分层:数组样或无(default=None),如果不是无,数据以分层的方式分割,使用它作为类标签。

sklearn.model_selection.train_测试_拆分。例如:

代码语言:javascript
代码运行次数:0
运行
复制
x, x_test, y, y_test = train_test_split(xtrain,labels,test_size=0.2, stratify=labels) 

这将确保在训练和测试数据之间的类分布是相似的。(旁注:我已经抛出了train_size参数,因为它将根据test_size__自动确定)

对于回归,据我所知,目前没有在scikit学习中实现。但是您可以找到关于交叉验证的讨论和手动实现这里这里

票数 3
EN

Data Science用户

发布于 2020-02-04 10:03:06

分裂成一个验证集,它不是在sklearn中实现的。但你可以用一种棘手的方法来做:

( 1)在第一步,你把X和y分开来训练和测试。

2)在第二步,您将您的培训集从前一步拆分为验证和较小的培训集。

代码语言:javascript
代码运行次数:0
运行
复制
X_train, X_test, y_train, y_test 
    = train_test_split(X, y, test_size=0.7, random_state=123)

X_train, X_val, y_train, y_val 
    = train_test_split(X_train, y_train, test_size=0.5, random_state=123)
票数 3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/67489

复制
相关文章

相似问题

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