小编fas*_*jhn的帖子

如何为ML算法矢量化DataFrame列?

有一个带有一些分类字符串值的DataFrame(例如uuid | url | browser).

我想将它转换为double来执行接受双矩阵的ML算法.

作为转换方法,我使用StringIndexer(spark 1.4)将我的字符串值映射到double值,所以我定义了一个这样的函数:

def str(arg: String, df:DataFrame) : DataFrame =
   (
    val indexer = new StringIndexer().setInputCol(arg).setOutputCol(arg+"_index")
    val newDF = indexer.fit(df).transform(df)
    return newDF
   )
Run Code Online (Sandbox Code Playgroud)

现在问题是我将迭代df的foreach列,调用此函数并在解析的双列中添加(或转换)原始字符串列,因此结果将是:

初始df:

[String: uuid|String: url| String: browser]
Run Code Online (Sandbox Code Playgroud)

最终df:

[String: uuid|Double: uuid_index|String: url|Double: url_index|String: browser|Double: Browser_index]
Run Code Online (Sandbox Code Playgroud)

提前致谢

scala apache-spark apache-spark-ml apache-spark-mllib

6
推荐指数
1
解决办法
2172
查看次数