Rav*_*rma 2 java linear-regression apache-spark
我是 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
Run Code Online (Sandbox Code Playgroud)
我们将数据转储到 Cassandra 中,我们想使用 spark 从中构建模型。我们从模型中的目标是找到在短时间内发生的急剧升温。例如,在数据中,1 分钟内温度升高了 10 度。我正在考虑使用线性回归来构建模型。然而,火花线性回归模型似乎只接受双值,在阅读文档后我明白了寻找权重的等式更多的是
y = a1x1+a2x2+a3x3
Run Code Online (Sandbox Code Playgroud)
比
y = mx+c
Run Code Online (Sandbox Code Playgroud)
所以 spark 可以给出权重和截距值。但我不确定我可以使用这个模型。只是为了满足我的好奇心,我确实尝试用这些数据构建模型。但是所有的预测都是可怕的,我认为数据也是如此。我试图建立一个温度与时间戳的矩阵,但预测非常不正确。
我的问题如下
我的示例代码:
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());
Run Code Online (Sandbox Code Playgroud)
我不确定选择构建线性回归模型是否最适合您的工作。首先,模型通常用于进行预测。如果温度为您感兴趣的变量,而您使用时间作为自变量进行,这将意味着你会在时间使得温度的预测,你没有使用,你的数据点的测量做有测量。或者,如果您试图证明全球平均温度随时间上升,拟合线性模型可能是一种方法。这不是你想要做的。
在我看来,您只想处理数据,而不是对其进行建模和预测。似乎您只想在 1 分钟内减去一个位置的所有点,并在温差大于 10 度时通知您。
在这种情况下,魔鬼在细节中。您是否只对同一个站点的 10 度变化感兴趣?或者它可以是同一区域内的任何传感器?在任何一种情况下,这更像是一个数据处理问题,而不是建模问题。例如,如果你想整天收集数据,然后运行一个脚本来分析它明天,那么 Spark 可能是一个不错的选择。另一方面,如果您希望系统持续监控数据并实时标记您,Spark 可能不是最佳选择。在这种情况下,您可能需要查看 Apache Storm。我不是 Storm 的专家,但我知道他们的大概用例是处理流、分布式数据。祝你好运!
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |