当前位置: 首页 > 知识库问答 >
问题:

使用 MLib 的阿帕奇火花中的分类变量

连坚白
2023-03-14

我对Apache Spark的世界比较陌生。我正在尝试使用LinearRegressionWithSGD()来估计一个大规模模型,我希望在不需要创建庞大的设计矩阵的情况下估计固定效果和交互项。

我注意到在决策树中有一个支持分类变量的实现

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/tree/DecisionTree.scala#L293

它创建一个从字符串到整数的哈希映射,并将其提供给模型。有人在Spark中尝试过类似的线性模型练习吗?

谢谢

共有2个答案

阎丰
2023-03-14

我已经在这个问题上工作了一段时间了。我的估计有很多类别,因此在输入MLlib之前创建整个设计矩阵是非常低效的。我正在尝试修改 Spark 源代码,以便在梯度下降内运行 SGD 时扩展行。一旦我完成它,我将发布解决方案

叶俊郎
2023-03-14

您可以使用One-Hot编码将分类变量转换到特征空间中,以便输入线性回归模型。

例如,如果您有一个值为“低”、“中”、“高”的分类变量,则可以将其编码为三种不同的整数特征,如下所示:

Category    Low Medium High
Low         1   0      0
Medium      0   1      0
High        0   0      1

这只是一种方法,还有其他方法,但如果你的分类值不是太大,一键编码是一个很好的选择。

 类似资料:
  • 我在尝试将spark数据帧的一列从十六进制字符串转换为双精度字符串时遇到了一个问题。我有以下代码: 我无法共享txs数据帧的内容,但以下是元数据: 但当我运行这个程序时,我得到了一个错误: 错误:类型不匹配;找到:MsgRow需要:org.apache.spark.sql.行MsgRow(row.getLong(0),row.getString(1),row.getString(2),hex2in

  • 我处理了像这样存储的双精度列表: 我想计算这个列表的平均值。根据文档,: MLlib的所有方法都使用Java友好类型,因此您可以像在Scala中一样导入和调用它们。唯一的警告是,这些方法采用Scala RDD对象,而Spark Java API使用单独的JavaRDD类。您可以通过对JavaRDD对象调用.RDD()将JavaRDD转换为Scala RDD。 在同一页面上,我看到以下代码: 根据我

  • 阅读 https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/feature/Word2Vec.scala 这种实现的文字是谷歌Word2Vec的一个端口 https://code.google.com/archive/p/word2vec/ 这是“向量空间中单词表示的有效估计”

  • 目前我正在研究Apache spark和Apache ignite框架。 这篇文章介绍了它们之间的一些原则差异,但我意识到我仍然不理解它们的目的。 我的意思是,哪一个问题更容易产生火花而不是点燃,反之亦然?

  • scala的版本是2.11.8;jdk为1.8;spark是2.0.2 我试图在spark apache的官方网站上运行一个LDA模型的示例,我从以下句子中得到了错误消息: 错误按摩是: 错误:(49,25)读取的值不是组织的成员。阿帕奇。火花SparkContext val dataset=spark。阅读格式(“libsvm”)^ 我不知道怎么解决。