如何使用一个热编码数据训练测试拆分?

Posted

技术标签:

【中文标题】如何使用一个热编码数据训练测试拆分?【英文标题】:How toTrain_test split with OneHot encoded Data? 【发布时间】:2020-11-12 08:14:32 【问题描述】:

我正在处理不平衡的数据,并尝试通过使用分层数据来改进我的模型。问题是我不确定如何做到这一点。到目前为止,我尝试过的一切都没有改变。

应该是这样的:

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size = 0.2, shuffle = True, random_state = 0, stratify = y_train)

但是我是否传递“分层”参数并不重要。我的数据是 OneHot 编码的,y_train 看起来像这样: [[1. 0.] [1. 0.] [0. 1.] ... [0. 1.] [0. 1.] [1. 0.]]

据我了解,分层需要我的两个班级,但我不确定如何做到这一点。

编辑:我是否设置 stratify = y_train 并不重要,因为 y_train 的尺寸不会改变。

谢谢!

【问题讨论】:

【参考方案1】:

stratify 改变的不是维度。这是班级的比例。例如,如果 1 的原始数据比例为 20%,0 的比例为 80%,那么在拆分后的数据中,比例应该相同。

希望对你有帮助。

【讨论】:

谢谢,我知道,但我的问题是我知道我的数据不平衡,但分层没有做任何事情。训练/测试数据保持不变。 澄清我的问题是:如果我设置“stratify = y_train”或将其省略,因为我的数据仍然存在,这并没有什么不同:“训练 191549 个样本,验证 47888 个样本”即使训练样本应该减少。我只是不明白为什么它不起作用。

以上是关于如何使用一个热编码数据训练测试拆分?的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn:如果经过一次热编码后它的特征少于训练/测试集,如何预测新数据

根据分类列拆分训练和测试集

如果我的测试数据在列中缺少值,我该如何解决一个热编码?

我是不是必须对训练和测试数据集分别进行一次热编码? [关闭]

如何将训练数据集拆分为训练,验证和测试数据集?

如何在 TensorFlow 中使用我自己的数据将图像拆分为测试和训练集