Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用Spark关联非数值数据_Apache Spark_Statistics_Apache Spark Mllib - Fatal编程技术网

Apache spark 使用Spark关联非数值数据

Apache spark 使用Spark关联非数值数据,apache-spark,statistics,apache-spark-mllib,Apache Spark,Statistics,Apache Spark Mllib,我试图使用Spark/MLlib来获得一组数据中多个列之间的相关系数。我对数字列没有问题,我已经成功地计算了皮尔逊相关性。但是,我不知道如何关联字符串和其他非数字数据。文档中指出,Spearman关联通常用于此目的,但我看到的所有示例似乎都使用数字数据,即使在Spearman案例中也是如此。为了获得关联,您必须将数据同态“加密”为数字格式。一般情况下,您将决定要关联的特征集,然后对数据进行预处理,使其仅由这些特征表示 如果您使用的是文本数据(文章,甚至是通过符号关联的单词),那么可以使用标记器/

我试图使用Spark/MLlib来获得一组数据中多个列之间的相关系数。我对数字列没有问题,我已经成功地计算了皮尔逊相关性。但是,我不知道如何关联字符串和其他非数字数据。文档中指出,Spearman关联通常用于此目的,但我看到的所有示例似乎都使用数字数据,即使在Spearman案例中也是如此。

为了获得关联,您必须将数据同态“加密”为数字格式。一般情况下,您将决定要关联的特征集,然后对数据进行预处理,使其仅由这些特征表示

如果您使用的是文本数据(文章,甚至是通过符号关联的单词),那么可以使用标记器/向量器/MinHashLSH方法。在这篇文章中有很好的描述。下面是一个关于如何使用regexokenizer预处理数据的好例子。获得散列特征后,您可以在一定程度上减少它们(很难理解100维字段中的相关性),并执行正常过程

对于某些数据类型,答案可能是散列,但它不代表特性,只代表唯一的值


如果您能提供样本数据,我们可以考虑不太通用的解决方案。

您必须将数据同态“加密”为数字格式,以获得相关性。一般情况下,您将决定要关联的特征集,然后对数据进行预处理,使其仅由这些特征表示

如果您使用的是文本数据(文章,甚至是通过符号关联的单词),那么可以使用标记器/向量器/MinHashLSH方法。在这篇文章中有很好的描述。下面是一个关于如何使用regexokenizer预处理数据的好例子。获得散列特征后,您可以在一定程度上减少它们(很难理解100维字段中的相关性),并执行正常过程

对于某些数据类型,答案可能是散列,但它不代表特性,只代表唯一的值


如果您可以提供示例数据,我们可以考虑不太通用的解决方案。

好的,那么如果只有有限(可能相当大)数量的不同值,那么我可以使用类似于[StringIndexer]()的东西吗?或者,如果不同字符串的数量大得令人望而却步,那么像MD5 hash digest之类的东西呢?截断哈希的最后“n”个字符(c.f.Git)?@Andy StringIndexer只保留值的频率,如果它足以表示相关性,那么是的。如果可能,我会尝试手动加权,并将特征集减少到2维甚至1维值。它通常会产生最好的结果。@Andy哈希(不管是否被截断)应该只用于处理值的差异性,而不是它们的特征。例如,您可以获取特性,减少它们,然后散列值,以便更容易按照确切的特性集对原始值进行分组。看起来我最好抽象出散列函数,并根据具体情况提供具体实现。谢谢你的帮助,这让事情变得更清楚了。好吧,如果只有有限(可能相当大)数量的不同值,那么我可以使用类似于[StringIndexer]()的东西吗?或者,如果不同字符串的数量大得令人望而却步,那么像MD5 hash digest之类的东西呢?截断哈希的最后“n”个字符(c.f.Git)?@Andy StringIndexer只保留值的频率,如果它足以表示相关性,那么是的。如果可能,我会尝试手动加权,并将特征集减少到2维甚至1维值。它通常会产生最好的结果。@Andy哈希(不管是否被截断)应该只用于处理值的差异性,而不是它们的特征。例如,您可以获取特性,减少它们,然后散列值,以便更容易按照确切的特性集对原始值进行分组。看起来我最好抽象出散列函数,并根据具体情况提供具体实现。谢谢你的帮助,这让事情变得更清楚了。