我正在做一个公司项目,我需要将数据划分为三个部分--培训、验证和测试(保留)。
是否有人知道我如何将上述数据分成3部分,每个部分将有相似的响应变量(目标率)-(分类的精度相似,回归的均数类似)。
我知道如何使用SKLEARN中的train_test_split函数将数据分成3部分
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)
但这并没有给出类似的目标率,有人能帮我吗?
发布于 2020-02-04 02:27:57
对于分类,可以使用stratify
参数:
分层:数组样或无(default=None),如果不是无,数据以分层的方式分割,使用它作为类标签。
见sklearn.model_selection.train_测试_拆分。例如:
x, x_test, y, y_test = train_test_split(xtrain,labels,test_size=0.2, stratify=labels)
这将确保在训练和测试数据之间的类分布是相似的。(旁注:我已经抛出了train_size
参数,因为它将根据test_size
__自动确定)
发布于 2020-02-04 02:03:06
分裂成一个验证集,它不是在sklearn中实现的。但你可以用一种棘手的方法来做:
( 1)在第一步,你把X和y分开来训练和测试。
2)在第二步,您将您的培训集从前一步拆分为验证和较小的培训集。
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)
https://datascience.stackexchange.com/questions/67489
复制相似问题