特征转换 - Bucketizer

优质
小牛编辑
129浏览
2023-12-01

  Bucketizer将连续的特征列转换成特征桶(buckets)列。这些桶由用户指定。它拥有一个splits参数。

  • splits:如果有n+1splits,那么将有n个桶。桶将由split xsplit y共同确定,它的值范围为[x,y),如果是最后
    一个桶,范围将是[x,y]splits应该严格递增。负无穷和正无穷必须明确的提供用来覆盖所有的双精度值,否则,超出splits的值将会被
    认为是一个错误。splits的两个例子是Array(Double.NegativeInfinity, 0.0, 1.0, Double.PositiveInfinity)Array(0.0, 1.0, 2.0)

  注意,如果你并不知道目标列的上界和下界,你应该添加Double.NegativeInfinityDouble.PositiveInfinity作为边界从而防止潜在的
超过边界的异常。下面是程序调用的例子。

  1. import org.apache.spark.ml.feature.Bucketizer
  2. val splits = Array(Double.NegativeInfinity, -0.5, 0.0, 0.5, Double.PositiveInfinity)
  3. val data = Array(-0.5, -0.3, 0.0, 0.2)
  4. val dataFrame = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features")
  5. val bucketizer = new Bucketizer()
  6. .setInputCol("features")
  7. .setOutputCol("bucketedFeatures")
  8. .setSplits(splits)
  9. // Transform original data into its bucket index.
  10. val bucketedData = bucketizer.transform(dataFrame)
  11. bucketedData.show()