理解Spark MLlib中LinearRegressionWithSGD的Python示例有问题?

我对机器学习Spark还是个新手,正在学习Spark MLlibs文档中的回归部分,特别是LinearRegressionWithSGD,可以在这个页面找到。我在理解python代码时遇到了一些困难。目前我理解的是,代码首先加载数据,然后形成labeledpoint。之后构建模型,并在训练数据上进行评估,计算MSE

让我感到困惑的是,在正常的机器学习过程中,我们首先将数据分为训练集和测试集。然后使用训练集构建模型,最后使用测试集进行评估。而在Spark MLlib文档中的代码中,我没有看到任何将数据分为训练集和测试集的操作。而且,我看到他们使用相同的数据构建模型,然后又用相同的数据进行评估。

我是否在代码中有什么地方没有理解?任何帮助我理解代码的建议都将非常有帮助。

注意:这是Spark MLlib文档页面中LinearRegressionWithSGD的代码

from pyspark.mllib.regression import LabeledPoint, LinearRegressionWithSGD, LinearRegressionModel# 加载和解析数据def parsePoint(line):    values = [float(x) for x in line.replace(',', ' ').split(' ')]    return LabeledPoint(values[0], values[1:])data = sc.textFile("data/mllib/ridge-data/lpsa.data")parsedData = data.map(parsePoint)# 构建模型model = LinearRegressionWithSGD.train(parsedData)# 在训练数据上评估模型valuesAndPreds = parsedData.map(lambda p: (p.label, model.predict(p.features)))MSE = valuesAndPreds.map(lambda (v, p): (v - p)**2).reduce(lambda x, y: x + y) / valuesAndPreds.count()print("Mean Squared Error = " + str(MSE))# 保存和加载模型model.save(sc, "myModelPath")sameModel = LinearRegressionModel.load(sc, "myModelPath")

回答:

你提到的过程是交叉验证。正如你观察到的,上面的例子没有进行交叉验证。但这并不意味着它是错误的。

该例子的唯一目的是说明如何训练和使用模型。你可以自由地分割数据并对模型进行交叉验证,过程将是相同的。只是数据发生了变化。

此外,在训练集上的表现也是有价值的。它可以告诉你你的模型是否过拟合或欠拟合。

总之,这个例子是正确的,你需要的是另一个关于交叉验证的例子。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注