问题标签 [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.
scala - 如何在没有 StringIndexer 的情况下在 Spark ML 中进行二进制分类
我尝试在没有 StringIndexer 的管道中使用 Spark ML DecisionTreeClassifier,因为我的功能已被索引为 (0.0; 1.0)。DecisionTreeClassifier as label 需要双精度值,因此此代码应该可以工作:
但实际上我得到
当然,我可以只放 StringIndexer 并让他为我的双“标签”字段工作,但我想使用 DecisionTreeClassifier 的输出 rawPrediction 列来获得每行的概率为 0.0 和 1.0,例如...
如果我将 StringIndexer 放入 Pipeline - 我将不知道 rawPrediction 向量中输入标签“0.0”和“1.0”的索引,因为字符串索引器将按值的频率进行索引,这可能会有所不同。
请帮助在不使用 StringIndexer 的情况下为 DecisionTreeClassifier 准备数据,或者建议其他方法来获取每行原始标签 (0.0; 1.0) 的概率。
apache-spark - 如何将 spark 数据帧转换为 RDD 并获取词袋
我有一个名为 article 的数据框
我想把它弄平,把它变成一袋字。我怎么能用目前的情况来实现这一点。我已经尝试了下面的代码,这似乎给了我一个类型不匹配的问题。
我最终想用这个 bow_corpus 来训练一个 word2vec 模型。
谢谢
java - 如何从 MultilayerPerceptronClassifier 获得分类概率?
这似乎最相关:如何在 spark.mllib 的分类模型中获取每个实例的概率
我正在使用 spark ml 进行分类任务,构建 MultilayerPerceptronClassifier。一旦我建立了一个模型,我可以得到一个给定输入向量的预测类,但我不能得到每个输出类的概率。上面的清单表明 NaiveBayesModel 从 Spark 1.5.0 开始支持此功能(使用 predictProbabilities 方法)。我想了解 MLPC 的这个功能。有没有办法破解它来获得我的概率?它会包含在 1.6.2 中吗?
apache-spark - 如何在没有 DataFrames/SparkContext 的情况下评估 spark.ml 模型?
使用 Spark MLLib,我会构建一个模型(如RandomForest
),然后可以通过加载模型并predict
在其上传递特征向量来在 Spark 之外对其进行评估。
似乎使用 Spark ML,predict
现在被调用transform
并且只作用于DataFrame
.
有什么方法可以DataFrame
在 Spark 之外构建,因为似乎需要 SparkContext 来构建 DataFrame?
我错过了什么吗?
scala - 如何将列转换为向量类型?
我在 Spark 中有一个 RDD,其中的对象基于一个案例类:
我想使用 Spark 的 ML 管道,所以我将其转换为 Spark 数据帧。作为管道的一部分,我想将其中一列转换为条目为向量的列。由于我希望该向量的长度随模型而变化,因此它应该作为特征转换的一部分内置到管道中。
所以我试图定义一个 Transformer 如下:
如何指定结果字段的DataType(即填写???)?它将是某个简单类(Boolean、Int、Double 等)的 Vector。看起来 VectorUDT 可能有效,但这是 Spark 私有的。由于任何 RDD 都可以转换为 DataFrame,因此任何案例类都可以转换为自定义 DataType。但是我不知道如何手动进行这种转换,否则我可以将它应用于一些包装向量的简单案例类。
此外,如果我为列指定向量类型,当我去拟合模型时,VectorAssembler 是否会正确地将向量处理为单独的特征?
Spark 尤其是 ML Pipeline 仍然是新手,因此感谢任何建议。
scala - 在 Spark StringIndexer 中处理 NULL 值
我有一个包含一些分类字符串列的数据集,我想用双精度类型表示它们。我使用 StringIndexer 进行此转换并且它有效,但是当我在另一个具有 NULL 值的数据集中尝试它时,它给出了java.lang.NullPointerException
错误并且不起作用。
为了更好地理解这里是我的代码:
那么如何使用 StringIndexer 解决这个 NULL 数据问题呢?
或者有没有更好的解决方案将具有 NULL 值的字符串类型的分类数据转换为双精度值?
scala - 管道后如何将变量名称映射到特征
我已经修改了 OneHotEncoder 示例以实际训练 LogisticRegression。我的问题是如何将生成的权重映射回分类变量?
输出
权重:[1.5098946631236487,-5.509833649232324,1.5098946631236487,1.5098946631236487,-5.509833649232324] 截距:2.6679020381781235
scala - Spark ML - 保存 OneVsRestModel
我正在重构我的代码以利用DataFrames、Estimators 和 Pipelines。我最初在RDD[LabeledPoint]
. 我喜欢学习和使用新的 API,但我不确定如何保存我的新模型并将其应用于新数据。
目前,ML 的实现LogisticRegression
只支持二分类。我是这样使用OneVsRest的:
我现在想保存我的OneVsRestModel
,但这似乎不受 API 支持。我试过了:
有没有办法保存这个,所以我可以将它加载到一个新的应用程序中进行新的预测?
apache-spark - ChiSqSelector 拟合方法中的 NoSuchElementException(1.6.0 版)
我遇到了一个对我来说没有多大意义的错误,并且无法在网上找到足够的信息来自己回答。
我编写了代码来生成 (String, ArrayBuffer[String]) 对的列表,然后使用 HashingTF 将特征列转换为向量(因为它用于 NLP 研究解析,最终我得到了很多独特的特征;很长的故事)。然后我使用 StringIndexer 转换字符串标签。在训练数据上运行 ChiSqSelector.fit 时出现“未找到密钥”错误。堆栈跟踪指向 ChiSqTest 中标签的哈希图查找。这让我觉得很奇怪,因为我可以有某种理由认为我可能用错了它并且没有以某种方式解释看不见的标签——除了这是训练数据的拟合方法。
无论如何,这是我的代码中有趣的部分,后面是堆栈跟踪的重要部分。任何帮助将不胜感激!
和堆栈跟踪:
我还意识到,通过将 sdp.take 的大小更改为更大(至 100),我得到了一个不同的错误: