Spark-MLlib 学习入门到掌握-OneHotEncoder独热编码[18]

  • OneHotEncoder(独热编码):采用01编码的一种算法,具体细节可百度。

  • 优点:独热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。

  • 缺点:当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。

  def OneHotEncoderTest(){
    val spark: SparkSession = SparkSession.builder().appName("implicits").master("local[2]").getOrCreate()
    import org.apache.spark.ml.feature.OneHotEncoderEstimator

    val df = spark.createDataFrame(Seq(
      (0.0, 1.0),
      (1.0, 0.0),
      (2.0, 1.0),
      (0.0, 2.0),
      (0.0, 1.0),
      (2.0, 0.0)
    )).toDF("categoryIndex1", "categoryIndex2")

    val encoder = new OneHotEncoderEstimator()
      .setInputCols(Array("categoryIndex1", "categoryIndex2"))
      .setOutputCols(Array("categoryVec1", "categoryVec2"))
    val model = encoder.fit(df)

    val encoded = model.transform(df)
    encoded.show()
  }

运行结果
Spark-MLlib 学习入门到掌握-OneHotEncoder独热编码[18]_第1张图片

你可能感兴趣的:([Spark-MLlib],机器学习,人工智能,深度学习,算法)