gpt4 book ai didi

scala - 相同的行为 Scala Spark Sample 和 SampleBy

转载 作者:行者123 更新时间:2023-12-05 08:05:02 24 4
gpt4 key购买 nike

我正在尝试在 Spark Dataframe 中执行分层采样,但 sampleBy 函数的行为(奇怪地)类似于 sample。

星火版本 3.0.1

import spark.implicits._

val data = Seq( ("Java", 20000), ("Java", 10000), ("Java", 3000), ("Java", 17000),
("Python", 100000), ("Python", 20000),
("Scala", 3000), ("Scala", 4000), ("Scala", 1000), ("Scala", 43000), ("Scala", 2000), ("Scala", 9000)).toDF("Language", "Price")
val sample_size = 0.5
val seed = 762387
val stratify = "Language"

val subsample = data.sample(withReplacement=false, fraction=sample_size, seed=seed)

subsample.show()

val fractions = data.select(stratify).distinct().as[String].collect().map((_, sample_size)).toMap
println(fractions.mkString("\n")
val stratified_subsample = data.stat.sampleBy(stratify, fractions=fractions, seed=seed)

stratified_subsample.show()

输出:

+--------+------+
|Language| Price|
+--------+------+
| Java| 3000|
| Python|100000|
| Python| 20000|
| Scala| 3000|
| Scala| 43000|
| Scala| 2000|
| Scala| 9000|
+--------+------+

Scala -> 0.5
Python -> 0.5
Java -> 0.5

+--------+------+
|Language| Price|
+--------+------+
| Java| 3000|
| Python|100000|
| Python| 20000|
| Scala| 3000|
| Scala| 43000|
| Scala| 2000|
| Scala| 9000|
+--------+------+

使用另一个种子 (6354345) 的输出:

+--------+------+
|Language| Price|
+--------+------+
| Java| 10000|
| Java| 17000|
| Python|100000|
| Scala| 3000|
| Scala| 4000|
| Scala| 1000|
| Scala| 43000|
| Scala| 2000|
| Scala| 9000|
+--------+------+

Scala -> 0.5
Python -> 0.5
Java -> 0.5

+--------+------+
|Language| Price|
+--------+------+
| Java| 10000|
| Java| 17000|
| Python|100000|
| Scala| 3000|
| Scala| 4000|
| Scala| 1000|
| Scala| 43000|
| Scala| 2000|
| Scala| 9000|
+--------+------+

我尝试过使用不同的 DataFrame、不同的种子并且两个 DataFrame 总是相等的。我总是有同样的行为,样本根本没有分层。我知道 sampleBy 不准确,但具有相同的行为似乎不太好。我的代码片段有问题吗?

最佳答案

当您使用“种子”时,您将获得相同的样本。如果填为0那么每次运行都会得到不同的样本

关于scala - 相同的行为 Scala Spark Sample 和 SampleBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66244183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com