【发布时间】:2017-11-30 18:14:54
【问题描述】:
我目前正在从事一个线性回归项目,我需要收集数据,将其拟合到模型上,然后根据测试数据进行预测。
如果我是正确的,简单的线性回归适用于两个变量,X(独立)和 Y(依赖)。我有以下数据集,我认为time 列是 X,value 列是 Y:
+-----+------+
|value|minute|
+-----+------+
| 5000| 672|
| 6000| 673|
| 7000| 676|
| 8000| 678|
| 9000| 680|
+-----+------+
我不知道如何将此数据集正确拟合到线性回归模型中。我以前使用过 k-means,我用它创建了一个向量形式的 features 列。我对这个数据集做了同样的事情:
VectorAssembler assembler = new VectorAssembler()
.setInputCols(new String[]{"minute", "value"})
.setOutputCol("features");
Dataset<Row> vectorData = assembler.transform(dataset);
然后我将其拟合到线性回归模型中:
LinearRegression lr = new LinearRegression();
LinearRegressionModel model = lr.fit(vectorData);
这是我卡住的部分。如何使用此模型进行预测?我想在minute 等于随机分钟时找到value 的值,例如。 700.
我该怎么做?如何根据随机 X 值找到 Y 值的预测/估计值?
编辑:线性回归模型是否区分因变量和自变量?怎么样?
【问题讨论】:
-
Javadoc 应该为您解决这个问题:spark.apache.org/docs/2.1.0/api/java/org/apache/spark/mllib/…。您还可以导出到 PMML 并将其可视化。
-
我已经这样做了,但是文档没有解释如何使用
predict()函数。它说它需要一个Vector作为参数。为什么?这是否意味着我需要将一个值转换为一个向量,然后将其传递给这个预测函数?所以如果我有一个表示时间的整数,我需要将其转换为向量才能进行预测? -
是的 - 引导您在 SparkML 中编码特征的方式。
-
但是如果我已经告诉我的模型我的特征列由 X 和 Y 变量(分钟和值)组成,它不会在预测函数上问我同样的问题吗?方面?如果是这样的话,那对我不起作用。就像我说的,我想根据我的 X(分钟)来预测 Y 的值。
-
这里有一个功能更全面的例子:go.databricks.com/hubfs/notebooks/Pop._vs._Price_LR.html -- 似乎最后一列默认用作目标特征 -- 或者称为“标签”的那一列
标签: java apache-spark linear-regression apache-spark-ml