Я изучаю Spark, и у меня есть код ниже в одном из руководств. Я понимаю, что фрейм данных является одним из горячих кодов в приведенном ниже коде, но я не понимаю, почему используется StringIndexer? Следует ли использовать StringIndexer вместе с OneHotEncoderEstimator? val si = new StringIndexer () .setHandleInvalid ("keep") .setInputCol (ProcuctTypeCol) .setOutputCol (ProcuctTypeSIOutCol)

val ohe = new OneHotEncoderEstimator()
      .setHandleInvalid("keep")
      .setInputCols(Array(si.getOutputCol))
      .setOutputCols(Array(ProductTypeOHEOutCol))

val pipeline = new Pipeline()
  .setStages(Array(si, ohe))

Благодарность

0
slysid 19 Окт 2020 в 21:12

1 ответ

Лучший ответ

SI преобразует строковое значение в целое число, а OHE делает целое число в кодировке ohe, если ваш столбец находится в int, например 1,2,3, вы можете применить OHE напрямую. Но если ваша метка в строке, например A, B, C, вы должны сначала использовать SI, а затем цепочку OHE

0
E.ZY. 20 Окт 2020 в 06:00