如何使用线性回归模型进行预测?
How to make predictions with Linear Regression Model?
我目前正在做一个线性回归项目,我需要收集数据,将其拟合到模型上,然后根据测试数据进行预测。
如果我是正确的,简单线性回归适用于两个变量,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 值的 prediction/estimate?
编辑:线性回归模型是否区分因变量和自变量?怎么样?
我只从 Spark MLlib 开始,尤其是线性回归,所以我只能讨论技术细节(而不是为什么机器学习会这样工作)。
This is the part where I get stuck. How can I make predictions with this model?
模型是转换器(如 VectorAssembler
),它提供了与 transform 运算符的非常简单的接口。
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 and especially 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.
感谢@RickMoritz 和@JacekLaskowski 的反馈,我找到了解决方案:
LinearRegression 确实有 X 和 Y 列。 X 列是 features
列,Y 列是 label
列。
因此,在将您的数据集拟合到 LinearRegression 模型之前,请确保声明您的 label
和 features
列。您可以在定义 LinearRegression 时设置标签列:
LinearRegression lr = new LinearRegression().setLabelCol(Ycolumn_name);
对于特征列,确保将 X 列转换为向量类型,然后您可以执行相同的操作:
LinearRegression lr = new LinearRegression().setFeaturesCol(Xcolumn_name);
完成后,您就大功告成了。要获得预测,只需将 X 值转换为向量并将其放在 LinearRegressionModel 的 predict()
函数中。
这里是关于线性回归模型的文档
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
将 XTrain、YTrain 数据拟合到线性回归模型。确保 XTrain 和 Y train 是数据帧。
使用 pandas 将您的数据转换为数据帧。
现在您可以输入测试数据来预测值
要获得最佳估算器,请使用网格搜索。
http://scikit-learn.org/stable/modules/grid_search.html
我目前正在做一个线性回归项目,我需要收集数据,将其拟合到模型上,然后根据测试数据进行预测。
如果我是正确的,简单线性回归适用于两个变量,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 值的 prediction/estimate?
编辑:线性回归模型是否区分因变量和自变量?怎么样?
我只从 Spark MLlib 开始,尤其是线性回归,所以我只能讨论技术细节(而不是为什么机器学习会这样工作)。
This is the part where I get stuck. How can I make predictions with this model?
模型是转换器(如 VectorAssembler
),它提供了与 transform 运算符的非常简单的接口。
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 and especially 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.
感谢@RickMoritz 和@JacekLaskowski 的反馈,我找到了解决方案:
LinearRegression 确实有 X 和 Y 列。 X 列是 features
列,Y 列是 label
列。
因此,在将您的数据集拟合到 LinearRegression 模型之前,请确保声明您的 label
和 features
列。您可以在定义 LinearRegression 时设置标签列:
LinearRegression lr = new LinearRegression().setLabelCol(Ycolumn_name);
对于特征列,确保将 X 列转换为向量类型,然后您可以执行相同的操作:
LinearRegression lr = new LinearRegression().setFeaturesCol(Xcolumn_name);
完成后,您就大功告成了。要获得预测,只需将 X 值转换为向量并将其放在 LinearRegressionModel 的 predict()
函数中。
这里是关于线性回归模型的文档
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
将 XTrain、YTrain 数据拟合到线性回归模型。确保 XTrain 和 Y train 是数据帧。
使用 pandas 将您的数据转换为数据帧。
现在您可以输入测试数据来预测值
要获得最佳估算器,请使用网格搜索。 http://scikit-learn.org/stable/modules/grid_search.html