如何使用apache Spark的MLlib的线性回归?

2023-12-31

我是apache Spark的新手,从MLlib的文档中,我找到了scala的示例,但我真的不知道scala,有人知道java中的示例吗?谢谢!示例代码是

import org.apache.spark.mllib.regression.LinearRegressionWithSGD
import org.apache.spark.mllib.regression.LabeledPoint

// Load and parse the data
val data = sc.textFile("mllib/data/ridge-data/lpsa.data")
val parsedData = data.map { line =>
  val parts = line.split(',')
  LabeledPoint(parts(0).toDouble, parts(1).split(' ').map(x => x.toDouble).toArray)
}

// Building the model
val numIterations = 20
val model = LinearRegressionWithSGD.train(parsedData, numIterations)

// Evaluate model on training examples and compute training error
val valuesAndPreds = parsedData.map { point =>
  val prediction = model.predict(point.features)
  (point.label, prediction)
}
val MSE = valuesAndPreds.map{ case(v, p) => math.pow((v - p), 2)}.reduce(_ +     _)/valuesAndPreds.count
println("training Mean Squared Error = " + MSE)

从文件MLlib http://spark.apache.org/docs/latest/mllib-guide.html thanks!


如文档中所示:

MLlib 的所有方法都使用 Java 友好的类型,因此您可以导入和 在那里调用它们的方式与在 Scala 中的方式相同。唯一需要注意的是 这些方法采用 Scala RDD 对象,而 Spark Java API 使用 单独的 JavaRDD 类。您可以通过以下方式将 Java RDD 转换为 Scala: 在 JavaRDD 对象上调用 .rdd()。

这并不容易,因为您仍然必须在 java 中重现 scala 代码,但它可以工作(至少在本例中)。

话虽如此,这是一个java实现:

public void linReg() {
    String master = "local";
    SparkConf conf = new SparkConf().setAppName("csvParser").setMaster(
            master);
    JavaSparkContext sc = new JavaSparkContext(conf);
    JavaRDD<String> data = sc.textFile("mllib/data/ridge-data/lpsa.data");
    JavaRDD<LabeledPoint> parseddata = data
            .map(new Function<String, LabeledPoint>() {
            // I see no ways of just using a lambda, hence more verbosity than with scala
                @Override
                public LabeledPoint call(String line) throws Exception {
                    String[] parts = line.split(",");
                    String[] pointsStr = parts[1].split(" ");
                    double[] points = new double[pointsStr.length];
                    for (int i = 0; i < pointsStr.length; i++)
                        points[i] = Double.valueOf(pointsStr[i]);
                    return new LabeledPoint(Double.valueOf(parts[0]),
                            Vectors.dense(points));
                }
            });

    // Building the model
    int numIterations = 20;
    LinearRegressionModel model = LinearRegressionWithSGD.train(
    parseddata.rdd(), numIterations); // notice the .rdd()

    // Evaluate model on training examples and compute training error
    JavaRDD<Tuple2<Double, Double>> valuesAndPred = parseddata
            .map(point -> new Tuple2<Double, Double>(point.label(), model
                    .predict(point.features())));
    // important point here is the Tuple2 explicit creation.

    double MSE = valuesAndPred.mapToDouble(
            tuple -> Math.pow(tuple._1 - tuple._2, 2)).mean();
    // you can compute the mean with this function, which is much easier
    System.out.println("training Mean Squared Error = "
            + String.valueOf(MSE));
}

它远非完美,但我希望它能让您更好地理解如何使用 Mllib 文档中的 scala 示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用apache Spark的MLlib的线性回归? 的相关文章

随机推荐

  • Akka.Net Streams 和远程处理 (Sink.ActorRefWithAck)

    我使用 Akka net Streams 做了一个非常简单的实现Sink ActorRefWithAck 订阅者向发布者请求一个大字符串 发布者通过切片发送它 它在本地 UT 工作得很好 但是不远程 我不明白出了什么问题 具体来说 订阅者能
  • 如何在 Django 中拥有这样的 URL?

    我怎样才能有这样的网址example com category catename operation 在姜戈 此外 在某些情况下 用户输入空格分隔的类别 我该如何处理 例如 如果用户输入 我的家 类别 则该类别的 URL 将变为exampl
  • 在 Azure Cosmos DB 中使用 Gremlin 重命名属性

    我们的一些代码库已经更改 因此它现在期望过去具有名称为 Sdg 的属性的顶点现在具有名称为 causeType 且具有相同值的属性 简而言之 财产的重命名 在这一点上我已经尝试了很多 而且 令我有点惊讶的是弄清楚如何搜索图表并在需要时进行重
  • 即使 JSON 已建立索引,查询中是否也需要分区键

    我计划使用 Cosmos Db 文档 Db 并且尝试了解查询 索引和分区如何相互关联 如何在 Azure Cosmos Db 中进行分区和缩放 https learn microsoft com en us azure cosmos db
  • 带有要排列的行的标量

    如何转换包含数组中带有换行符的字符串的标量 并将这些行作为元素 例如 考虑到这一点 lines line 1 nline 2 nline 3 n 我想检索这个 lines 0 gt line 1 n lines 1 gt line 2 n
  • 有什么办法可以在网页上显示C++吗?

    有没有一种相对简单的方法可以在网页上显示 C 程序的输出 我并不是指手动 换句话说 您在网页上看到它 因为它运行 而不是像我制作代码标签并自己编写它一样 编辑 为了让每个人都能清楚地了解这一点 我将把它发布在这里 我不想用 C 制作网页 如
  • 根据索引初始化 MATLAB 矩阵

    我正在尝试创建一个满足以下条件的矩阵 M M i j f i j 对于一些f 我可以通过说进行元素初始化M zeros m n 然后循环 例如 八度 M zeros m n for i 1 m for j 1 n m i j i j 2 e
  • 如何将 C# 文档生成为 CHM 或 HTML 文件?

    有没有办法直接从 Visual Studio 中从代码文档生成可读文档文件 也考虑2010年 代码示例
  • 在父类中记录静态方法

    我有一个抽象类 Parent 有 2 个子类 A 和 B Parent 有一个名为 do 的静态方法 我想知道是否有一种方法可以让该静态方法在 A 类被称为 A do 时在 Logger 中添加日志信息 在被称为 B do 时在 Logge
  • PHP Exception::getCode() 与其实现的 Throwable 接口相矛盾

    我发现了一个我无法理解的矛盾 异常 getCode https www php net manual en exception getcode php 有这样的定义 final公共异常 getCode 无效 mixed 附说明 返回异常代码
  • 什么存储位置(SQL Server 或文件系统)可以提高保存 tiff 图像的性能?

    我们的系统需要存储大小约为 3k 的 tiff 图像 我们在给定时间收到约 300 张图像 需要快速处理它们 一旦收到约 100 000 张图像 这些图像就会从我们的系统转移到另一个存档系统或被清除 我正在寻找图像文件初始保存的最佳性能 传
  • 有没有关于 gremlin 'match()' 如何工作的文档?

    我正在用 match 遍历编写 gremlin 查询 某些模式匹配的行为似乎与其他模式语言不同 输入遍历器值如何与模式变量绑定 g V A B match as x as y project x y gt x v A y v A gt x
  • 使用summary r 进行逻辑值计数

    在数据框中 我有一列包含 Y 和 N 值 该数据框还有一个 id 列 我想创建两列 一列包含 Y 总数 另一列包含每个 id 的 N 总数 我尝试使用 dplyr summarise 函数执行此过程 group by id gt summa
  • Polymer 2.0 webcomponents-loader.js 缺少 Edge polyfill

    我们目前将项目从 Polymer 1 更新到 Polymer 2 混合版本 我知道 webcomponents hi sd ce js 是 Edge 的 polyfill 在 Microsoft Edge 上测试页面时 我现在收到一条错误
  • 服务器端验证 Facebook 用户

    我正在编写一个 Facebook 应用程序 其中列出了用户的朋友 并与用户提供的有关他们的信息 存储在 Google App Engine 数据库中 进行交叉引用 我的应用程序的运行方式如下 用户登录 Facebook 后 通过 Faceb
  • 如何在页面刷新时保留无线电输入状态

    我有一个表单 如果用户提交有错误的表单 以防页面刷新 我需要在该表单上存储所有单选按钮的状态 我想实现与此非常相似的目标 function example input type radio checked each function thi
  • 如何检查复制快照代理状态?

    我想在使用此语句启动代理后检查代理的状态 EXEC sp startpublication snapshot publication 因为我想做下一步 需要工作已经开始 我不相信有内置复制存储过程来检查快照代理状态 我可能是错的 但是 您可
  • 将 Maven 输出发送到文件

    在 Windows 7 上 我尝试发送maven 3命令到文本文件 我从我试图分析的项目的根目录调用该命令 命令是 mvn dependency tree Dverbose Dincludes commons collections Dou
  • 具有零值双精度的奇怪 if 语句行为

    有人愿意向我解释一下它的价值吗this oBalance QouteBalance因小于零而被评估为真 但显然不是 请参见下图 在比较 C 中的双精度数时 我是否遗漏了一些基本的东西 public double QouteBalance g
  • 如何使用apache Spark的MLlib的线性回归?

    我是apache Spark的新手 从MLlib的文档中 我找到了scala的示例 但我真的不知道scala 有人知道java中的示例吗 谢谢 示例代码是 import org apache spark mllib regression L