特征转换 - OneHotEncoder

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

  One-hot encoding将标签索引列映射为二值向量,这个向量至多有一个1值。
这个编码允许要求连续特征的算法(如逻辑回归)使用类别特征。下面是程序调用的例子。

  1. import org.apache.spark.ml.feature.{OneHotEncoder, StringIndexer}
  2. val df = spark.createDataFrame(Seq(
  3. (0, "a"),
  4. (1, "b"),
  5. (2, "c"),
  6. (3, "a"),
  7. (4, "a"),
  8. (5, "c")
  9. )).toDF("id", "category")
  10. val indexer = new StringIndexer()
  11. .setInputCol("category")
  12. .setOutputCol("categoryIndex")
  13. .fit(df)
  14. val indexed = indexer.transform(df)
  15. val encoder = new OneHotEncoder()
  16. .setInputCol("categoryIndex")
  17. .setOutputCol("categoryVec")
  18. val encoded = encoder.transform(indexed)
  19. encoded.select("id", "categoryVec").show()