【发布时间】:2020-04-09 13:42:29
【问题描述】:
我有一个像这样的 spark scala 数据框
val df = Seq(
(10, 12),
(44, 14),
(32, 25),
(31, 24),
(75, 25),
(80, 20),
(35, 55),
(32, 25),
(67, 72),
(32, 21)
).toDF("x1","x2")
df.show()
+---+---+
| x1| x2|
+---+---+
| 10| 12|
| 44| 14|
| 32| 25|
| 31| 24|
| 75| 25|
| 80| 20|
| 35| 55|
| 32| 25|
| 67| 72|
| 32| 21|
+---+---+
我需要将此数据拆分为训练数据和测试数据,其中训练数据将是前 8 行 (80%),而测试数据将是最后 2 行 (20%)。
我试过,val Array(train, test) = df.randomSplit(Array(0.8, 0.2)) 但它是随机选择 8 行(而不是选择前 8 行)作为训练,其他作为测试
那么任何人都可以建议如何选择我上面提到的分区吗?
谢谢
【问题讨论】:
-
只是出于好奇:为什么您更喜欢按顺序而不是随机拆分?
-
@ernest_k 我的实际数据集是一个时间序列数据集。在那种情况下,我不能随机拆分数据。
-
randomSplit 使用提供的权重随机拆分 RDD。至少没有办法随机拆分
-
您可以使用手动编码进行拆分,您可以根据索引引入索引列和总行数,您可以进行百分比选择,我可以尝试一下
标签: scala apache-spark