Bucketizer (根據指定的分位點進行分桶)

Bucketizer (根據指定的分位點進行分桶)

描述:Bucketizer是一個Transformer,只能對DataFrame進行單特徵轉換,而且特徵的數據類型必須是DoubleType。spa

參數信息 參數描述 備註 其餘
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|
+------+-----------------+

實際應用例子:

      將人的體重進行離散化,將人羣分爲:【瘦,標準,胖】code

相關文章
相關標籤/搜索