一、pyspark 机器学习库ml
1、ML 和 MLlib的区别
- ml 目前处于维护状态(只修复bug而不增加新功能),并且以后会支持ml ,MLlib 在spark3.0中可能会被废弃(学习spark的小伙伴直接用ml库就好)
- ml库基于DataFrame,MLlib基于RDD 。DataFrame是抽象在rdd之上的,其耦合度低,抽象级别更高;
- ml中提出了管道的概念,这个和scikit-learn一样,可以将特征清洗,模型训练,结果输出整合在一起,方便操作;
- ml中算法的训练和预测等都和scikit-learn中比较类似,比如fit 表模型训练,predict表预测,fit_transform等,MLlib不同的模型,训练、预测的方法都不一样!
总之,已经熟练使用scikit-learn的小伙伴,可以无缝切换到ml中;
2、ml 中的子库
2.1 pyspark.ml.param
目前介绍比较少,用到了在做详细介绍。
2.2 pyspark.feature
这个模块相当重要,进行主要的特征工程!
1、 二值化
通过设置 threshold 来将连续值分成两类,比如label是连续值,但是要进行二分类,就可以使用二值化来实现;
pyspark.ml.feature.
Binarizer
spark 实例:
data = ss.table('rs.rs_us_home_goods_v1').where("dt='20190116'")
binarizer = Binarizer(threshold=50, inputCol='score', outputCol='score1')
result = binarizer.transform(data)
result.show(5)
其中还有几种设置参数和获取参数的方法:
binarizer.setParams(outputCol='freq')
result1 = binarizer.transform(data).head().freq
binarizer.getThreshold()
params = {binarizer.threshold: -0.5, binarizer.outputCol: "out"}
result1 = binarizer.transform(data, params)
2.3
2.4
2.5