В чем разница между Spark OneHotEncoder + VectorAssembler, FeatureHasher и VectorIndexer? - PullRequest
0 голосов
/ 30 августа 2018

Кажется, что все эти функции выполняют довольно похожие операции. OneHotEncoderEstimator в сочетании с VectorAssembler кодирует и помещает в вектор. FeatureHasher, кажется, выполняет кодирование и использует трюк хеширования, чтобы поместить его в вектор, а VectorIndexer, кажется, делает то же самое, что и OneHotEncoder + VectorAssembler, но может обрабатывать как непрерывные, так и категориальные переменные.

У меня есть 2 вопроса. Во-первых, помимо разницы в хитрости, есть ли практическая разница, если конечной целью является кодирование, а затем векторизация? Во-вторых, есть ли минус всегда использовать FeatureHasher?

Одно потенциальное предостережение, о котором я подумал, это то, что FeatureHasher и VectorIndexer могут маркировать кодирование вместо одного горячего кодирования, но я не думаю, что в документации это указано. И если VectorIndexer будет кодировать только метки, разве это не сделает StringIndexer избыточным / менее универсальным по сравнению, кроме различий в типах данных?

...