理解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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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