java - 如何使用线性回归模型进行预测?

标签 java apache-spark linear-regression apache-spark-ml

我目前正在做一个线性回归项目,我需要收集数据,将其拟合到模型上,然后根据测试数据进行预测。

如果我是正确的,简单线性回归适用于两个变量,X(独立)和 Y(相关)。我有以下数据集,其中我认为 time 列为 X,value 列为 Y:

+-----+------+
|value|minute|
+-----+------+
| 5000|   672|
| 6000|   673|
| 7000|   676|
| 8000|   678|
| 9000|   680|
+-----+------+

我不知道如何将此数据集正确地拟合到线性回归模型中。我以前使用过 k-means,我用它做的是创建一个 vector 形式的 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 值的预测/估计值?

编辑:线性回归模型是否区分因变量和自变量?怎么办?

最佳答案

我只开始使用 Spark MLlib,尤其是线性回归,所以我只能讨论技术细节(而不是为什么机器学习会以这种方式工作)。

This is the part where I get stuck. How can I make predictions with this model?

模型是转换器(如 VectorAssembler),提供与 transform 的非常简单的接口(interface)运营商。

transform(dataset: Dataset[_]): DataFrame Transforms the input dataset.

这就是您传递数据集并返回带有 prediction 列的另一个数据集的地方。顺便说一下,这是训练和做出预测的一般方法。

下面将为您提供输入数据集中特征的预测。

val dataset = ...
model.transform(dataset).select("prediction").show

我强烈建议将 Spark MLlib 的 ML 管道功能用于所谓的预测分析工作流,该工作流将原始数据转换为Estimator 的格式> 愉快多了。参见 Machine Learning Library (MLlib) Guide特别是ML Pipelines .

ML Pipelines provide a uniform set of high-level APIs built on top of DataFrames that help users create and tune practical machine learning pipelines.

关于java - 如何使用线性回归模型进行预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784566/

相关文章:

java - QueryDSL 4 与 RowNumber Window 功能

java.lang.NoSuchMethodError 编译

java - 如何计算 Java 正则表达式中字符串中括号的数量

machine-learning - 最小二乘和X'Xθ = X'y 有什么关系?

java - 何时使用 : Substring or Split using delimiter? 哪个更好?

scala - Spark SQL - 从 sql 函数生成数组数组

python - 在 pyspark 中不使用 pivot 进行分组的有效方法

python - 使用 Spark.xml 读取 XML 时,为什么我的数据框加载了空白值? (Python/数据 block )

r - 如何在线性回归中手动计算 t 统计量的 p 值

python - 在 Python 中从大型数据帧创建稀疏矩阵