首页技术文章正文

Spark Mllib分层抽样操作步骤

更新时间:2021-01-29 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif

分层抽样法也叫类型抽样法,它是先将总体样本按照某种特征分为若干次级(层),然后再从每一一层内进行独立取样,组成一个样本的统计学计算方法。例如,某手机生产厂家估算当地潜在用户,可以将当地居民消费水平作为分层基础,减少样本中的误差,如果不采取分层抽样,仅在消费水平较高的用户中做调查,就不能准确地估算出潜在的用户。接下来,通过Spark-Shell演示分层抽样方法,具体代码如下。

#创建键值对RDD

scala>val data =sc.parallelize(

Seg((1, 'a'), (1, 'b'), (2,'c'), (2, 'a'), (2, 'e'), (3, 'f1))#设定抽样格式

scala>val fractions =Map(1->0.1, 2->0.6,3->0.3)

并从每层获取抽样样本

scala> val approxSample =

data . sampleByKey (withReplacementfalse, fractions = fractions)并从每层获取精确样本

scala> val exactSample=

中招eyeyse otheptacee -fale, fractoo -ractoes#打印抽样样本

scala> approxsample.foreach (printin)

(2,e)

#打印精确样本

scala> exactsample. frech(printn)

(2,d)

(3,f)

(1,b)

(2,c)

在上述代码中用到了两种3分层抽样方法.其中sampleByKey()方法需要作用于一 一个键值对数组,其中Rroy用于分类Velu可以是任雅值,然后通过r.歌徒父分关茶件有收.K条件的采样比例1.0代表被率为o,qaun机农物物鲜光否sppyeyExrn)方法会对全量数据做采样计算。对于每个类别,都会产生(k.n)个样本,其中Ak是键为factos的Key的样本类别采样的比例:nk是Key所拥有的样本数。sampleByKeyExtra采样的结果会更准确,有99.9%的置信度,但耗费的计算资源也更多。

1611902819984_分层抽样.gif

sampleByKey()方法和sampleByKeyExact()方法的区别在于sampleByKey()方法每次都得通过给定的概率以-种类似于掷硬币的方式来决定这个观察值是否被放入样本,因此-遍就可以过滤完所有数据,最后得到一个近似大小的样本,但往往并不够准确。 



猜你喜欢: 

Spark SQL用法建议【大数据文章】

Spark发展史:让你了解是什么Spark?

黑马程序员大数据培训

分享到:
在线咨询 我要报名
和我们在线交谈!