问题标签 [apache-spark-ml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
691 浏览

java - Spark ML Pipeline api保存不起作用

在 1.6 版中,管道 api 获得了一组新功能来保存和加载管道阶段。在我训练了一个分类器并稍后再次加载它以重用它并节省计算再次建模的工作之后,我尝试将一个阶段保存到磁盘。

由于某种原因,当我保存模型时,该目录仅包含元数据目录。当我尝试再次加载它时,出现以下异常:

线程“主”java.lang.UnsupportedOperationException 中的异常:org.apache.spark.rdd.RDD$$anonfun$first$1.apply(RDD.scala:1330) 的空集合在 org.apache.spark.rdd.RDDOperationScope$ .withScope(RDDOperationScope.scala:150) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111) 在 org.apache.spark.rdd.RDD.withScope(RDD.scala:316) 在 org .apache.spark.rdd.RDD.first(RDD.scala:1327) 在 org.apache.spark.ml.util.DefaultParamsReader$.loadMetadata(ReadWrite.scala:284) 在 org.apache.spark.ml.tuning。 CrossValidator$SharedReadWrite$.load(CrossValidator.scala:287) at org.apache.spark.ml.tuning.CrossValidatorModel$CrossValidatorModelReader.load(CrossValidator.scala:393) at org.apache.spark.ml.tuning.CrossValidatorModel$CrossValidatorModelReader .load(CrossValidator.scala:384) at org.apache.spark.ml.util.MLReadable$class.load(ReadWrite.scala:176) at org.apache.spark.ml.tuning.CrossValidatorModel$.load(CrossValidator.scala:368) at org.test.categoryminer.spark.SparkTextClassifierModelCache.get(SparkTextClassifierModelCache.java:34) 上的 org.apache.spark.ml.tuning.CrossValidatorModel.load(CrossValidator.scala)

保存我使用的模型:crossValidatorModel.save("/tmp/my.model")

并加载它我使用:CrossValidatorModel.load("/tmp/my.model")

当我在 CrossValidator 对象上调用 fit(dataframe) 时,我在得到的 CrossValidatorModel 对象上调用 save 。

任何指针为什么它只保存元数据目录?

0 投票
1 回答
932 浏览

apache-spark-mllib - 如何使用 Spark Mlib 多层感知器权重数组

我有一个要求,我需要找到 ANN 实现中使用的属性的相对重要性。我使用 spark MLib 库 MultiLayerPerceptron 来实现。该模型给了我一个向量,它是一个权重数组。我知道有一些算法可以从 weights 中得出相对重要性,但是 MLib 实现给出了一个大的一维数组,并且没有说明与每个输入对应的权重。任何人都知道如何获得与每个输入节点对应的权重?

0 投票
1 回答
3710 浏览

java - Spark ML 索引器无法用点解析 DataFrame 列名?

我有一个 DataFrame,其中有一列名为ab。当我将ab指定为StringIndexer的输入列名时,AnalysisException 会显示消息"cannot resolve 'ab' given input columns ab"。我正在使用 Spark 1.6.0。

我知道旧版本的 Spark 可能在列名中存在点问题,但在最近的版本中,可以在 Spark shell 中的列名和 SQL 查询中使用反引号。例如,这是另一个问题的解决方案,如何在 Spark SQL 中使用连字符转义列名。其中一些问题已报告 SPARK-6898,列名中的特殊字符已损坏,但在 1.4.0 中已解决。

这是一个最小的示例和堆栈跟踪:

现在,值得尝试使用反引号列名的相同示例,因为我们会得到一些奇怪的结果。这是一个具有相同模式的示例,但这次我们在框架中获得了数据。在尝试任何索引之前,我们会将名为的列复制到名为a.b的列a_b。这需要使用反引号,并且它可以正常工作。然后,我们将尝试为该a_b列建立索引,这没有问题。然后,当我们尝试a.b使用反引号对列进行索引时,会发生一些非常奇怪的事情。我们没有错误,但也没有结果:

第一个示例的堆栈跟踪

0 投票
1 回答
769 浏览

apache-spark - 带有随机森林的 Spark 流程数据框

使用 Spark 1.5.1 的答案 MLLib Random Forest Probability,我能够使用 训练随机森林ml.classification.RandomForestClassifier,并使用经过训练的随机森林处理保留数据帧。

我遇到的问题是,我想保存这个经过训练的随机森林,以便将来处理任何数据帧(具有与训练集相同的特征)。

此页面上的分类示例使用mllib.tree.model.RandomForestModel,它显示了如何保存经过训练的森林,但据我所知,只能在LabeledPointRDD 上进行训练(并在未来进行处理)。我对LabeledPointRDD 的问题是它只能包含标签双精度和特征向量,所以我会丢失所有我需要用于其他目的的非标签/非特征列。

所以我想我需要一种方法来保存ml.classification.RandomForestClassifier 的结果,或者构造一个LabeledPointRDD,该 RDD 可以保留除通过mllib.tree.model.RandomForestModel.

任何人都知道为什么同时存在 ML 和 MLlib 库中的一个吗?

非常感谢您阅读我的问题,并提前感谢您提供任何解决方案/建议。

0 投票
1 回答
2072 浏览

apache-spark - Spark 和分类字符串变量

我试图了解 spark.ml 如何处理字符串分类自变量。我知道在 Spark 中我必须使用StringIndexer将字符串转换为双精度。
例如,“a”/“b”/“c” => 0.0/1.0/2.0。
但我真正想避免的是必须在双打列上使用OneHotEncoder。这似乎使管道不必要地混乱。特别是因为 Spark 知道数据是分类的。希望下面的示例代码使我的问题更清楚。

逻辑回归将其视为只有一个自变量的模型。

但是自变量是分类的,具有三个类别 = [“a”、“b”、“c”]。我知道我从未做过 k 编码之一,但数据帧的元数据知道特征向量是名义上的。

如何将此信息传递给LogisticRegression?这不是保留数据帧元数据的重点吗?SparkML中似乎没有CategoricalFeaturesInfo。我真的需要对每个分类特征进行 1 of k 编码吗?

0 投票
1 回答
907 浏览

apache-spark - pyspark ml 推荐 - 所有推荐

嗨,

我是 Spark 的新手,我正在尝试使用 ML 推荐。

我的代码

如何为所有电影的所有用户获得 2 条推荐?

谢谢你的时间。

0 投票
2 回答
973 浏览

apache-spark - 无法为数据源加载类:Spark ML pyspark/scala 中的 Libsvm

当我尝试使用在 pyspark/scala 中导入 libsvm 文件时,"sqlContext.read.format("libsvm").load"出现以下错误 -

“无法加载数据源的类:Libsvm。”

同时,如果我使用"MLUtils.loadLibSVMFile"它,它工作得很好。我需要同时使用Spark ML(以获得类概率)和MLlib评估。附上错误截图。

这是一个 MapR 集群。Spark 版本 1.5.2 错误

0 投票
1 回答
1929 浏览

python - pyspark 添加带有数据框行号的新列字段

嗨,我正在尝试使用 Spark 构建推荐系统

我有一个包含用户电子邮件和电影评分的数据框。

我的第一个疑问是,pySpark MLlib 不接受电子邮件,我是对的吗?因为这个我需要通过主键更改电子邮件。

我的方法是创建一个临时表,选择不同的用户,现在我想添加一个带有行号的新列(这个数字将是每个用户的主键。

我有的

我想要的是

接下来我将进行连接并获得最终数据框以在 MLlib 中使用

问候并感谢您的宝贵时间。

0 投票
3 回答
5077 浏览

scala - 如何从 UDF 创建自定义 Transformer?

我试图创建和保存带有自定义阶段的管道。我需要使用 a添加column到我的。因此,我想知道是否可以将 a或类似动作转换为?DataFrameUDFUDFTransformer

我的自定义UDF看起来像这样,我想学习如何使用UDFas a custom来做到这一点Transformer

0 投票
4 回答
17091 浏览

apache-spark - Spark中的HashingTF和CountVectorizer有什么区别?

尝试在 Spark 中进行文档分类。我不确定哈希在 HashingTF 中的作用;它会牺牲任何准确性吗?我对此表示怀疑,但我不知道。spark doc说它使用了“散列技巧”......只是工程师使用的另一个非常糟糕/令人困惑的命名示例(我也有罪)。CountVectorizer 还需要设置词汇量大小,但它有另一个参数,一个阈值参数,可用于排除文本语料库中出现在某个阈值以下的单词或标记。我不明白这两个变形金刚之间的区别。重要的是算法中的后续步骤。例如,如果我想对生成的 tfidf 矩阵执行 SVD,那么词汇量大小将决定 SVD 的矩阵大小,这会影响代码的运行时间,