spark sample采样
參數(shù)解釋:
1、參數(shù)withReplacement:
網(wǎng)上找了很多資料沒有詳細(xì)講這一塊,然后被他們描述的一臉懵逼,再然后不知怎么的就反應(yīng)過來(lái),這tm是大一還是大二的數(shù)學(xué)課教的概率。。
記得有個(gè)這樣的問題:黑球有10個(gè),白球有5個(gè),然后都放在一個(gè)桶中,一共抽3次。
有兩種問法:
(1)每抽一次再把球放回桶里,桶里被抽取的球的總數(shù)不變,還是15個(gè),然后再抽,抽完再放回去,再繼續(xù)抽,直到抽了3次位置。
這個(gè)就是withReplacement參數(shù)為true時(shí)的情況。
(2)每抽中一個(gè),則把這個(gè)球放旁邊去,不放回桶里,每抽一次少一個(gè)球。。直到抽了3次為止。
這個(gè)就是withReplacement參數(shù)為false時(shí)的情況。
?
桶里就是原來(lái)的集合,球就是集合的元素
?
2、fraction表示抽樣比例;0~1之間的浮點(diǎn)數(shù),注意,會(huì)有誤差的。。比如十個(gè)元素,比例為0.1,他抽取的時(shí)候可能為0個(gè),1個(gè)、2個(gè)(我少量數(shù)據(jù)隨便跑幾次就有三種可能,所以這個(gè)比例只是趨近于,而不是一定)
3、seed為隨機(jī)數(shù)種子(java的random不是也有個(gè)seed么,沒錯(cuò),作用類似)
?
最后執(zhí)行例子:
(1)創(chuàng)建RDD
scala> val rdd = sc.parallelize(1 to 10)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[20] at parallelize at <console>:24
(2)打印
scala> rdd.collect()
res15: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
(3)放回抽樣
scala> var sample1 = rdd.sample(true,0.4,2)
sample1: org.apache.spark.rdd.RDD[Int] = PartitionwiseSampledRDD[21] at sample at <console>:26
(4)打印放回抽樣結(jié)果
scala> sample1.collect()
res16: Array[Int] = Array(1, 2, 2, 7, 7, 8, 9)
(5)不放回抽樣
scala> var sample2 = rdd.sample(false,0.2,3)
sample2: org.apache.spark.rdd.RDD[Int] = PartitionwiseSampledRDD[22] at sample at <console>:26
(6)打印不放回抽樣結(jié)果
scala> sample2.collect()
res17: Array[Int] = Array(1, 9)
?
總結(jié)
以上是生活随笔為你收集整理的spark sample采样的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 口算训练(思维)
- 下一篇: 日常一记(2)--vba修改模块名