问题标签 [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 回答
15828 浏览

python - 在 Python 中从 Spark DataFrame 创建标记点

我使用 python 中的什么函数从 spark 数据帧.map()创建一组?labeledPoints如果标签/结果不是第一列但我可以参考其列名“状态”,则表示法是什么?

我用这个 .map() 函数创建了 Python 数据框:

在 reduce 函数重新组合所有 Pandas 数据帧后,我将其转换为 Spark 数据帧。

但是现在我如何labledPoints在 Python 中创建它?我认为它可能是另一个.map()功能?

0 投票
1 回答
1667 浏览

apache-spark - 在 Spark ML 管道中缓存中间结果

最近我打算将我的独立 python ML 代码迁移到 spark。事实证明,ML 管道spark.ml非常方便,具有用于链接算法阶段和超参数网格搜索的流线型 API。

尽管如此,我发现它对现有文档中的一项重要功能的支持是模糊的:缓存中间结果。当流水线涉及计算密集阶段时,此功能的重要性就显现出来了。

例如,在我的例子中,我使用一个巨大的稀疏矩阵对时间序列数据执行多个移动平均值,以形成输入特征。矩阵的结构由一些超参数决定。这一步结果成为整个管道的瓶颈,因为我必须在运行时构造矩阵。

在参数搜索期间,除了这个“结构参数”之外,我通常还有其他参数要检查。因此,如果我可以在“结构参数”不变的情况下重用巨大的矩阵,我可以节省大量时间。出于这个原因,我特意编写了代码来缓存和重用这些中间结果。

所以我的问题是:Spark 的 ML 管道可以自动处理中间缓存吗?还是我必须手动形成代码才能这样做?如果是这样,是否有任何最佳实践可供学习?

PS我查看了官方文档和其他一些材料,但似乎没有一个讨论这个话题。

0 投票
3 回答
1613 浏览

scala - 如何拆分 ML Pileline Logistic 回归产生的预测概率

我正在尝试使用 ML 管道和 DataFrame API 从逻辑模型中提取预测概率。预测概率的输出是一个列向量,其中存储了每个类(0, 1)的预测概率,如下所示。我想知道如何只提取第 1 类的概率。谢谢!

概率
“[0.13293408418007766,0.8670659158199223]”
“[0.1335112097146626,0.8664887902853374]”

0 投票
1 回答
16612 浏览

python - 在 Spark ML / pyspark 中以编程方式创建特征向量

我想知道如果我在多个数字列中具有功能,是否有一种简洁的方法可以在 pyspark 中的 DataFrame 上运行 ML(例如 KMeans)。

即在Iris数据集中:

我想使用 KMeans 而不用手动添加的特征向量作为新列重新创建 DataSet,并且在代码中重复硬编码原始列。

我想改进的解决方案:

我正在寻找一个解决方案,类似于:

0 投票
1 回答
1353 浏览

r - Spark ML Pipeline Logistic 回归产生比 R GLM 更糟糕的预测

我使用 ML PipeLine 运行逻辑回归模型,但由于某些原因,我得到的结果比 R 更差。我做了一些研究,发现与此问题相关的唯一帖子是this。似乎Spark Logistic Regression 返回的模型使损失函数最小化,而 R glm 函数使用最大似然。Spark 模型只得到了 71.3% 的正确记录,而 R 可以正确预测 95.55% 的案例。我想知道我是否在设置上做错了什么,是否有办法改进预测。以下是我的 Spark 代码和 R 代码-

火花代码

R代码

如果您需要任何其他信息,请随时告诉我。谢谢!

编辑 2015 年 9 月 18 日我尝试增加最大迭代次数并显着降低容差。不幸的是,它并没有改善预测。该模型似乎收敛到局部最小值而不是全局最小值。

0 投票
1 回答
2889 浏览

apache-spark - 如何在 mllib 中准备训练数据

TL;博士; 如何mllib训练我的 wiki 数据(文本和类别)以预测推文?

我无法弄清楚如何转换我的标记化 wiki 数据,以便可以通过NaiveBayesLogisticRegression. 我的目标是使用经过训练的模型与推文进行比较*。我尝试过使用 LR 和 for 的管道,HashingTFIDFNaiveBayes一直得到错误的预测。这是我尝试过的:

*请注意,我想将 wiki 数据中的许多类别用于我的标签...我只看到二进制分类(它是一个类别或另一个类别)....有可能做我想做的事吗?

带 LR 的管道

朴素贝叶斯

0 投票
0 回答
2340 浏览

python - 带有交叉验证的 PySpark 管道中的自定义转换器

我写了一个自定义转换器,就像这里描述的那样。

在使用我的转换器创建管道作为第一步时,我能够训练一个(逻辑回归)模型进行分类。

但是,当我想像这样使用此管道执行交叉验证时:

我收到以下错误:

和 Python 堆栈跟踪:

我通过预先转换我的数据框来解决这个错误,即将我的变压器移出管道。但我真的很想将所有步骤都保留在处理管道中,这样我就可以在对看不见的数据进行分类时使用它,而无需任何前面的步骤,并且还能够调整特征提取参数。所以任何帮助表示赞赏。

0 投票
10 回答
23673 浏览

scala - 从 Spark DataFrame 中删除嵌套列

我有一个DataFrame架构

同时,我可以使用过滤数据框

我无法使用删除列

我在这里做错了什么吗?我也试过(不成功)做drop(rawData("features.feat1")),虽然这样做没有多大意义。

提前致谢,

尼基尔

0 投票
3 回答
9271 浏览

apache-spark - 如何将具有 SparseVector 列的 RDD 转换为具有列作为向量的 DataFrame

我有一个带有值元组(String,SparseVector)的RDD,我想使用RDD创建一个DataFrame。获取 (label:string, features:vector) DataFrame,它是大多数 ml 算法库所需的 Schema。我知道可以这样做,因为 HashingTF ml 库在给定DataFrame的特征列时会输出一个向量。

所以我的问题是,我能否以某种方式让(String,SparseVector)的RDD将其转换为(String,vector)的DataFrame。我尝试了通常的sqlContext.createDataFrame方法,但没有适合我需要的DataType 。

0 投票
1 回答
3021 浏览

scala - Spark MLlib 示例,NoSuchMethodError: org.apache.spark.sql.SQLContext.createDataFrame()

我正在关注文档示例示例:Estimator、Transformer 和 Param

我收到错误消息

23 年 9 月 15 日 11:46:51 信息 BlockManagerMaster:在线程“主”java.lang.NoSuchMethodError 中注册了 BlockManager 异常:scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/ JavaUniverse$JavaMirror;在 SimpleApp$.main(hw.scala:75)

第 75 行是代码“sqlContext.createDataFrame()”:

我的 sbt 如下所示:

我试图四处搜索,发现这篇与我的问题非常相似的帖子,我尝试将我的 sbt 设置更改为 spark 版本(spark-mllib_2.11 到 2.10,spark-1.4.1 到 1.5.0),但是它带来了更多的依赖冲突。

我的直觉是这是一些版本问题,但我自己无法弄清楚,有人可以帮忙吗?多谢。