目录

特征转换 - VectorAssembler

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

  VectorAssembler是一个转换器,它可以将给定的多列转换为一个向量列。合并原始特征与通过不同的转换器转换而来的特征,从而训练机器学习模型,
VectorAssembler是非常有用的。VectorAssembler允许这些类型:所有的数值类型,boolean类型以及vector类型。

例子

  假设我们有下面的DataFrame,它的列名分别是id, hour, mobile, userFeatures, clicked

  1. id | hour | mobile | userFeatures | clicked
  2. ----|------|--------|------------------|---------
  3. 0 | 18 | 1.0 | [0.0, 10.0, 0.5] | 1.0

  userFeatures是一个向量列,包含三个用户特征。我们想合并hour, mobileuserFeatures到一个名为features的特征列。
通过转换之后,我们可以得到下面的结果。

  1. id | hour | mobile | userFeatures | clicked | features
  2. ----|------|--------|------------------|---------|-----------------------------
  3. 0 | 18 | 1.0 | [0.0, 10.0, 0.5] | 1.0 | [18.0, 1.0, 0.0, 10.0, 0.5]

  下面是程序调用的例子。

  1. import org.apache.spark.ml.feature.VectorAssembler
  2. import org.apache.spark.ml.linalg.Vectors
  3. val dataset = spark.createDataFrame(
  4. Seq((0, 18, 1.0, Vectors.dense(0.0, 10.0, 0.5), 1.0))
  5. ).toDF("id", "hour", "mobile", "userFeatures", "clicked")
  6. val assembler = new VectorAssembler()
  7. .setInputCols(Array("hour", "mobile", "userFeatures"))
  8. .setOutputCol("features")
  9. val output = assembler.transform(dataset)
  10. println(output.select("features", "clicked").first())