StringInderxer и одно горячее кодирование в SparkR

Я пытаюсь преобразовать строковую переменную в SparkR в числовую, используя одну концепцию горячего кодирования и используя stringindexer в приведенном ниже коде: df ‹-ft_string_indexer (spark_df, input_col = cluster_group, output_col = new) Однако я получаю ошибку ниже: неприменимый метод для ft_string_indexer, примененного к объекту класса SparkDataFrame

Есть идеи по поводу правильного кода для Stringindexer и Onehotencoding в SparkR?


person Mayank    schedule 05.10.2020    source источник


Ответы (1)


Во-первых, ft_string_indexer () предназначен для sparklyr, а не для sparkR. Чтобы узнать о различиях между ними, см. здесь. В целом, для машинного обучения лучше использовать sparklyr, поэтому я бы порекомендовал перейти на sparklyr, если можете.

Во-вторых, стоит отметить, что SparkR использует onehotencoder в фоновом режиме для всего своего машинного обучения. Это указано здесь. Так что, возможно, вы сможете обойтись без этого, в зависимости от вашей модели.

Мне не удалось найти функцию SparkR, которая делает то же самое, что и ft_string_indexer (), но вы можете использовать кодирование. Это должно поддерживаться в любом машинном обучении, которое вы делаете, но без примера я не могу быть уверен. Следующее взято из документации по кодированию SparkR:

df <- createDataFrame(as.data.frame(Titanic, stringsAsFactors = FALSE))
tmp <- mutate(df, s1 = encode(df$Class, "UTF-8"))
tmp2 <- mutate(tmp, s2 = base64(tmp$s1), 
                    s3 = decode(tmp$s1, "UTF-8"),
                    s4 = soundex(tmp$Sex))
person edog429    schedule 05.10.2020