Зачем Spark Mllib нужны векторы для правильной работы? - PullRequest
0 голосов
/ 17 января 2020

Меня немного смущает вопрос, почему функции Spark Mllib ETL, например, MinMaxScaler , требуют, чтобы векторы собирались вместо простого использования столбца из кадра данных. Т.е. вместо возможности сделать это:

scaler = MinMaxScaler(inputCol="time_since_live", outputCol="scaledTimeSinceLive")
main_df = scaler.fit(main_df).transform(main_df)

Мне нужно сделать это:

assembler = VectorAssembler(inputCols=['time_since_live'],outputCol='time_since_liveVect')
main_df = assembler.transform(main_df)
scaler = MinMaxScaler(inputCol="time_since_liveVect", outputCol="scaledTimeSinceLive")
main_df = scaler.fit(main_df).transform(main_df)

Кажется, что это такой ненужный шаг, потому что я в конечном итоге создать вектор с одним входом столбец для запуска MinMaxScaler. Зачем нужно, чтобы это было в векторном формате, а не просто в столбце данных?

1 Ответ

0 голосов
/ 18 января 2020

В машинном обучении и распознавании образов набор таких функций всегда представлен как вектор и называется «вектором признаков». Вики, прочитанные по элементу и вектору элементов

Таким образом, все основные библиотеки ml - это API, созданные для работы с векторами элементов

Теперь вопрос о том, где следует у нас есть шаг преобразования вектора, должен ли он быть в клиентском коде [как он есть сейчас] или должен быть в API, и клиентский код должен иметь возможность вызывать API, просто перечисляя столбцы функций. ИМХО, у нас может быть и то и другое, если у вас есть немного свободного времени, вы можете добавить новый API, чтобы принимать список столбцов вместо вектора признаков и сделать запрос на извлечение. Давайте посмотрим, что об этом думает сообщество Spark

...