您的位置:首页 > 其它

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

2019-11-11 18:05 3931 查看

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|
+------+-----------------+

实际应用例子:

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

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐