在理解python中的Spark MLlib的LinearRegressionWithSGD示例时遇到问题吗?
作者:互联网
因此,我是机器学习和Spark的新手,并且正在阅读Spark MLlibs关于回归的文档,尤其是this page处的LinearRegressionWithSGD.我在理解python代码方面有些困难.这就是我到目前为止所了解的-代码加载数据,然后形成labeledpoint.之后,建立模型,然后根据训练数据进行评估,并计算MSE.
现在让我感到困惑的是,在正常的机器学习过程中,我们首先将数据分为训练集和测试集.我们使用训练集建立模型,最后使用测试集进行评估.现在,在Spark MLlib文档的代码中,我看不到训练和测试集的任何划分.最重要的是,我看到他们使用数据构建模型,然后使用相同的数据进行评估.
代码中有我无法理解的内容吗?理解代码的任何帮助都会有所帮助.
注意:这是Spark MLlib文档页面上LinearRegressionWithSGD的代码
from pyspark.mllib.regression import LabeledPoint, LinearRegressionWithSGD, LinearRegressionModel
# Load and parse the data
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)
# Build the model
model = LinearRegressionWithSGD.train(parsedData)
# Evaluate the model on training data
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))
# Save and load model
model.save(sc, "myModelPath")
sameModel = LinearRegressionModel.load(sc, "myModelPath")
解决方法:
您正在谈论的过程是交叉验证.如您所见,上面的示例未进行交叉验证.但这并不意味着它是错误的.
该示例的唯一目的是说明如何训练和使用模型.您可以自由拆分数据并交叉验证模型,过程将相同.仅数据已更改.
此外,训练集上的表现也很有价值.它可以告诉您模型是过度拟合还是拟合不足.
总而言之,这个例子很好,您需要的是另一个关于交叉验证的例子.
标签:apache-spark,linear-regression,machine-learning,apache-spark-mllib,python 来源: https://codeday.me/bug/20191027/1948013.html