SparkR中的StringInderxer和一种热编码

问题描述

我正在尝试通过使用一种热编码概念并在以下代码上使用stringindexer将SparkR中的字符串变量转换为数字: df

对SparkR中的stringindexer和Onehotencoding的正确代码有任何想法吗?

解决方法

首先,ft_string_indexer()用于sparklyr,而不用于sparkR。有关两者之间的差异,请参见here。一般来说,sparklyr更适合ML,因此,如果可以的话,我建议您改用sparklyr。

第二,值得注意的是,SparkR在其所有ML的后台都使用onehotencoder。这记为here。因此,根据模型的不同,您也许可以不做任何事情而逃脱。

我找不到与ft_string_indexer()完全相同的功能的SparkR函数,但是可以使用编码。无论您正在执行什么ML,都应保持这种状态,但是如果没有示例,我不确定。以下摘自SparkR documentation on encode

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))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...