【发布时间】:2017-07-31 15:41:06
【问题描述】:
我使用以下代码使用交叉验证来训练线性回归模型:
from pyspark.ml.evaluation import RegressionEvaluator
lr = LinearRegression(maxIter=maxIteration)
modelEvaluator=RegressionEvaluator()
pipeline = Pipeline(stages=[lr])
paramGrid = ParamGridBuilder().addGrid(lr.regParam, [0.1, 0.01]).addGrid(lr.elasticNetParam, [0, 1]).build()
crossval = CrossValidator(estimator=pipeline,
estimatorParamMaps=paramGrid,
evaluator=modelEvaluator,
numFolds=3)
cvModel = crossval.fit(training)
现在我想绘制 roc 曲线,我使用了以下代码,但出现此错误:
'LinearRegressionTrainingSummary' 对象没有属性 'areaUnderROC'
trainingSummary = cvModel.bestModel.stages[-1].summary
trainingSummary.roc.show()
print("areaUnderROC: " + str(trainingSummary.areaUnderROC))
我也想在每次迭代时检查objectiveHistory,我知道我最后可以得到它
print("numIterations: %d" % trainingSummary.totalIterations)
print("objectiveHistory: %s" % str(trainingSummary.objectiveHistory))
但我想在每次迭代中获取它,我该怎么做?
此外,我想在测试数据上评估模型,我该怎么做?
prediction = cvModel.transform(test)
我知道我可以写的训练数据集:
print("RMSE: %f" % trainingSummary.rootMeanSquaredError)
print("r2: %f" % trainingSummary.r2)
但我怎样才能获得这些用于测试数据集的指标?
【问题讨论】:
-
对答案满意吗?
-
谢谢,您的回答很有帮助,只有一个问题,我如何了解 pyspark ml 库?除了 Spark 在线文档?
-
周围的资源不多,而且 API 变化非常频繁。这可能有用(Scala):jaceklaskowski.gitbooks.io/mastering-apache-spark/content/…
-
加上很多令人头疼的问题和未记录的反直觉功能,尤其是对于 Pyspark - 请参阅我的博客文章 nodalpoint.com/spark-classification
-
感谢您的帮助
标签: apache-spark machine-learning pyspark cross-validation apache-spark-ml