SparkMl-Bucketizer (根据指定的分位点进行分桶)

原创
2019/11/11 11:07
阅读数 3.7K

Bucketizer (根据指定的分位点进行分桶)

描述:Bucketizer是一个Transformer,只能对DataFrame进行单特征转换,并且特征的数据类型必须是DoubleType。

参数信息 参数描述 备注 其他
setInputCol String DF中待变换的特征,特征类型必须为:DoubleType 必填
setOutputCol String 变换后的特征名称,转换后的类型为:DoubleType 必填
setSplits Array[Double] 分箱分位点:Array(Double.MinValue, 20, 50, 70, Double.MaxValue) 必填
setHandleInvalid String 无效条目的处理方式,枚举值:["skip", "error", "keep"] 可选

程序示例:

//特征名称
var feature = "weight"
var feature_new = "weight_bucketizer"
//分箱点[前闭后开]
var splits: Array[Double] = Array(Double.MinValue, 20, 50, 70, Double.MaxValue)
//数据预处理
var dataset = dataFrame.select(col(feature).cast(DataTypes.DoubleType))
//特征分桶
var transform = new Bucketizer()
.setInputCol(feature)         //待变换的特征
.setOutputCol(feature_new)    //变换后的特征名称
.setSplits(splits)            //分箱点[前闭后开]
.setHandleInvalid("skip")     //无效条目的处理方式[跳过]
.transform(dataset)
//show
transform.show()

数据结果:

+------+-----------------+
|weight|weight_bucketizer|
+------+-----------------+
|  45.0|              1.0|
|  60.0|              2.0|
|  69.0|              2.0|
|  53.0|              2.0|
|  90.0|              3.0|
|  45.0|              1.0|
|  53.0|              2.0|
|  88.0|              3.0|
|  82.0|              3.0|
|  76.0|              3.0|
+------+-----------------+

实际应用例子:

      将人的体重进行离散化,将人群分为:【瘦,标准,胖】

更多博客推荐:

      SparkML(2.1.0)机器学习库指南

      本文链接:SparkMl-Bucketizer (根据指定的分位点进行分桶)

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部