scala - Spark 带替换采样法的原理是什么?
问题描述
我正在研究 Spark,我有一个关于 sample() 方法的问题。你可能知道,sample() 需要三个参数
sample( withReplacement : boolean, Fraction : Double, seed : Long )
fraction
当 withReplacement 为 True 时,我无法理解第二个。
在 Document 中,它表示每个元素的替换提取的期望值。
如果我在分数中输入 2 并且 RDD 有 10 个元素,它如何在里面采样?原理是什么?(我知道它不能保证 20 的采样量)
请帮我理解。
解决方案
为了实现带替换的采样,Spark正在使用PoissonSampler
. 它从泊松分布中生成数字,以确定采样器应该跳过多少项目,然后再产生新值。
分数越高,泊松分布的 lambda 参数越低,或者换句话说,步长为 0 的概率越高,我们再次采用相同的项目。
请参阅采样器源代码以查看确切的过程。
推荐阅读
- python - 如何在多个收益函数中产生一个收益
- google-cloud-platform - 在构建 Docker 映像时向 Google Build 授予对 google 存储桶的访问权限
- android - android项目的BaseFragment架构
- python - 如何正确读取 csv 中格式错误的字符串?
- kotlin - 在 Kotlin 中测试实时数据时出现的奇怪问题
- asp.net - 在 Razor 中转义 javascript
- javascript - JS:导入json文件utf8
- swift - 从一个信号发送 voip 推送通知
- c++ - 如何在不使用 pthread_join() 的情况下同步线程?
- swift - SwiftUI - 如何仅在一个屏幕上自定义导航栏?