问题标签 [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.
python - 在 Python 中从 Spark DataFrame 创建标记点
我使用 python 中的什么函数从 spark 数据帧.map()
创建一组?labeledPoints
如果标签/结果不是第一列但我可以参考其列名“状态”,则表示法是什么?
我用这个 .map() 函数创建了 Python 数据框:
在 reduce 函数重新组合所有 Pandas 数据帧后,我将其转换为 Spark 数据帧。
但是现在我如何labledPoints
在 Python 中创建它?我认为它可能是另一个.map()
功能?
apache-spark - 在 Spark ML 管道中缓存中间结果
最近我打算将我的独立 python ML 代码迁移到 spark。事实证明,ML 管道spark.ml
非常方便,具有用于链接算法阶段和超参数网格搜索的流线型 API。
尽管如此,我发现它对现有文档中的一项重要功能的支持是模糊的:缓存中间结果。当流水线涉及计算密集阶段时,此功能的重要性就显现出来了。
例如,在我的例子中,我使用一个巨大的稀疏矩阵对时间序列数据执行多个移动平均值,以形成输入特征。矩阵的结构由一些超参数决定。这一步结果成为整个管道的瓶颈,因为我必须在运行时构造矩阵。
在参数搜索期间,除了这个“结构参数”之外,我通常还有其他参数要检查。因此,如果我可以在“结构参数”不变的情况下重用巨大的矩阵,我可以节省大量时间。出于这个原因,我特意编写了代码来缓存和重用这些中间结果。
所以我的问题是:Spark 的 ML 管道可以自动处理中间缓存吗?还是我必须手动形成代码才能这样做?如果是这样,是否有任何最佳实践可供学习?
PS我查看了官方文档和其他一些材料,但似乎没有一个讨论这个话题。
scala - 如何拆分 ML Pileline Logistic 回归产生的预测概率
我正在尝试使用 ML 管道和 DataFrame API 从逻辑模型中提取预测概率。预测概率的输出是一个列向量,其中存储了每个类(0, 1)的预测概率,如下所示。我想知道如何只提取第 1 类的概率。谢谢!
概率
“[0.13293408418007766,0.8670659158199223]”
“[0.1335112097146626,0.8664887902853374]”
python - 在 Spark ML / pyspark 中以编程方式创建特征向量
我想知道如果我在多个数字列中具有功能,是否有一种简洁的方法可以在 pyspark 中的 DataFrame 上运行 ML(例如 KMeans)。
即在Iris
数据集中:
我想使用 KMeans 而不用手动添加的特征向量作为新列重新创建 DataSet,并且在代码中重复硬编码原始列。
我想改进的解决方案:
我正在寻找一个解决方案,类似于:
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 日我尝试增加最大迭代次数并显着降低容差。不幸的是,它并没有改善预测。该模型似乎收敛到局部最小值而不是全局最小值。
apache-spark - 如何在 mllib 中准备训练数据
TL;博士;
如何mllib
训练我的 wiki 数据(文本和类别)以预测推文?
我无法弄清楚如何转换我的标记化 wiki 数据,以便可以通过NaiveBayes
或LogisticRegression
. 我的目标是使用经过训练的模型与推文进行比较*。我尝试过使用 LR 和 for 的管道,HashingTF
但IDF
我NaiveBayes
一直得到错误的预测。这是我尝试过的:
*请注意,我想将 wiki 数据中的许多类别用于我的标签...我只看到二进制分类(它是一个类别或另一个类别)....有可能做我想做的事吗?
带 LR 的管道
朴素贝叶斯
python - 带有交叉验证的 PySpark 管道中的自定义转换器
我写了一个自定义转换器,就像这里描述的那样。
在使用我的转换器创建管道作为第一步时,我能够训练一个(逻辑回归)模型进行分类。
但是,当我想像这样使用此管道执行交叉验证时:
我收到以下错误:
和 Python 堆栈跟踪:
我通过预先转换我的数据框来解决这个错误,即将我的变压器移出管道。但我真的很想将所有步骤都保留在处理管道中,这样我就可以在对看不见的数据进行分类时使用它,而无需任何前面的步骤,并且还能够调整特征提取参数。所以任何帮助表示赞赏。
scala - 从 Spark DataFrame 中删除嵌套列
我有一个DataFrame
架构
同时,我可以使用过滤数据框
我无法使用删除列
我在这里做错了什么吗?我也试过(不成功)做drop(rawData("features.feat1"))
,虽然这样做没有多大意义。
提前致谢,
尼基尔
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 。
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),但是它带来了更多的依赖冲突。
我的直觉是这是一些版本问题,但我自己无法弄清楚,有人可以帮忙吗?多谢。