如何在 pyspark 上创建分层拆分训练、验证和测试集?
Posted
技术标签:
【中文标题】如何在 pyspark 上创建分层拆分训练、验证和测试集?【英文标题】:How to create stratified split training, validation, and test set on pyspark? 【发布时间】:2019-09-19 15:45:28 【问题描述】:我有一个小数据集 (140K),我想将其拆分为验证集、使用目标变量的验证集测试集和另一个字段来区分这些拆分。
【问题讨论】:
Stratified sampling with pyspark的可能重复 @pissall 分层样本和分层拆分并不完全相同。但是,这是一个好的开始。谢谢 这是一个如何使用groupby
方法进行比例分配的示例。掌握逻辑并帮助您的用例就是一切。
看看这个***.com/a/61016937/8836068
【参考方案1】:
在 Pyspark 中,您可以使用 randomSplit() 函数将数据集分为训练数据集和测试数据集。它最多可以有两个参数,即权重和种子。我们使用种子是因为我们想要相同的输出。在权重中,您可以指定浮点数。如果总和不为 1,它将对权重进行归一化。它用于指定百分比数据将进入训练、验证和测试部分。
示例代码
data.randomSplit([0.8,0.1,0.1],785)
【讨论】:
感谢您的回复。看起来不错,不幸的是randomSplit
创建了随机训练、验证和测试部分。我希望我可以将样本拆分按特征分层。所以分裂有每个班级的相同百分比。类似于@pissall 提到的 [使用 pyspark 进行分层采样](***.com/questions/47637760/…) 的东西,但用于拆分以上是关于如何在 pyspark 上创建分层拆分训练、验证和测试集?的主要内容,如果未能解决你的问题,请参考以下文章
基于 python 中的多个特征的训练测试拆分的分层交叉验证或抽样