我是一個關於火花的新手,並且剛剛開始了一些認真的工作。
我們正在建立一個平臺,我們正在從特定時間戳的電臺接收溫度數據。因此,該數據是越來越張貼到的RabbitMQ爲CSV e.g使用apache火花進行溫度預測
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
我們正在傾倒的數據到卡桑德拉,我們想用火花建立一個模型出來。 我們從模型中找到的目標是發現在短時間窗口內發生劇烈的溫度升高。例如,數據中1分鐘內溫度上升10度。我正在考慮使用線性迴歸來建立模型。然而火花線性迴歸模型似乎只能接受雙重價值和閱讀文檔後,我明白,發現權重的公式是更加的形式
y = a1x1+a2x2+a3x3
比
y = mx+c
所以火花可以給權重和截距值。但我不確定我可以使用這個模型。 爲了滿足我的好奇心,我確實嘗試從這些數據中構建模型。但所有的預測都非常可怕,我也認爲這些數據。我試圖建立一個溫度與時間戳的矩陣,並且預測很不正確。
我的問題是下面
- 是我建立的模型完全錯誤的方式。如果是這樣,我該如何糾正它?
- 如果不是線性迴歸模型,是否有任何其他模型機制可以表明這種急劇上升?
我的示例代碼:
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());