【问题标题】:using apache spark for temperature prediction使用 apache spark 进行温度预测
【发布时间】:2015-11-24 12:40:53
【问题描述】:

我是 spark 的新手,刚刚开始认真研究它。
我们正在构建一个平台,在该平台上,我们可以在特定时间戳接收来自站点的温度数据。因此数据以 csv 格式发布到 RabbitMQ,例如

WD1,12.3,15-10-12T12:23:45
WD2,12.4,15-10-12T12:24:45
WD1,12.3,15-10-12T12:25:45
WD1,22.3,15-10-12T12:26:45

我们正在将数据转储到 Cassandra 中,并希望使用 spark 从中构建模型。 我们从模型中的目标是找到在短时间内发生的急剧升温。例如,在数据中,温度在 1 分钟内上升了 10 度。我正在考虑使用线性回归来构建模型。然而,火花线性回归模型似乎只接受双值,在阅读了文档后,我了解到寻找权重的方程更多地是以

的形式
y = a1x1+a2x2+a3x3

y = mx+c

所以 spark 可以给出权重和截距值。但我不确定我是否可以使用这个模型。 只是为了满足我的好奇心,我确实尝试根据这些数据构建模型。但所有的预测都是可怕的,我认为数据也是如此。我试图建立一个温度与时间戳的矩阵,但预测非常不正确。

我的问题如下

  1. 是我构建模型的方式完全错误。如果是这样,我该如何纠正它?
  2. 如果不是线性回归模型,是否还有其他模型机制可以表明这种急剧上升?

我的示例代码:

JavaRDD<LabeledPoint> parsedData = cassandraRowsRDD.map(new Function<String, LabeledPoint>() {
            public LabeledPoint call(String line) {
                String[] parts = line.split(",");
                double value = Double.parseDouble(parts[1]);
                System.out.println("Y = " + Double.parseDouble(parts[0]) + " :: TIMESTAMP = " + value);
                return new LabeledPoint(Double.parseDouble(parts[0]), Vectors.dense(value));
            }
        });
        parsedData.cache();

        StandardScaler scaler = new StandardScaler();
        DataFrame dataFrame = sqlContext.createDataFrame(parsedData, LabeledPoint.class);
        System.out.println(dataFrame.count());

        dataFrame.printSchema();

        LinearRegression lr = new LinearRegression().setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8);

        // Fit the model
        LinearRegressionModel lrModel = lr.fit(dataFrame);
        System.out.println("Weights: " + lrModel.weights() + " Intercept: " + lrModel.intercept());

【问题讨论】:

    标签: java apache-spark linear-regression


    【解决方案1】:

    我不确定构建线性回归模型的选择是否最适合您尝试做的事情。首先,模型通常用于进行预测。如果温度是您感兴趣的变量,并且您使用时间作为自变量,这意味着您将使用您确实有测量值的数据点在没有测量值的时候预测温度。或者,如果您试图证明全球平均温度随时间上升,拟合线性模型可能是一种方法。这不是你想要做的。

    在我看来,您只想处理数据,而不是对其进行建模和预测。似乎您只想在 1 分钟内减去某个位置的所有点,并在温差大于 10 度时通知您。

    在这种情况下,魔鬼在细节中。您是否只对同一个站点的 10 度变化感兴趣?或者它可以是同一区域内的任何传感器?在任何一种情况下,这更多的是数据处理问题而不是建模问题。例如,如果你想收集一整天的数据,然后运行一个明天分析它的脚本,那么 Spark 可能是一个不错的选择。另一方面,如果您希望系统持续监控数据并实时标记您,Spark 可能不是最佳选择。在这种情况下,您可能需要查看 Apache Storm。我不是 Storm 方面的专家,但我知道他们的大概用例是处理流式分布式数据。祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-16
      • 2022-07-28
      • 2020-02-20
      • 2015-03-18
      • 2017-04-11
      • 2018-03-01
      • 2017-08-10
      • 2015-06-04
      相关资源
      最近更新 更多