我正在尝试使用Spark / MLlib来获取一组数据中多列之间的相关系数。我对数字列没有任何问题,我已经成功地计算了Pearson相关性。但是,我无法弄清楚如何关联字符串和其他非数字数据。该文档指出Spearman相关性通常用于此目的,但我见过的所有示例似乎都使用数字数据,即使在Spearman案例中也是如此。
答案 0 :(得分:2)
您必须将数据同态“加密”为数字格式才能获得相关性。在一般情况下,您将决定要关联的要素的集合,然后预处理数据,以便它们仅由这些要素表示。
如果您正在使用文本数据(文章或甚至与符号相关的单词),您可以使用tokenizer / vectorizer / MinHashLSH方法。这在example中有详细描述。关于如何使用RegexTokenizer预处理数据,这是一个很好的example。获得散列特征后,您可以在一定程度上减少它们(很难理解100维场中的相关性)并执行正常过程。
对于某些数据类型,答案可能是散列,但它不代表功能,只代表唯一值。
如果您可以提供样本数据,我们可以考虑不太通用的解决方案。