我有些困惑如何理解Spark的交叉验证。我看到的所有示例都是用于参数调整,但我认为它也可以进行常规的K折交叉验证,对吗?
我的目标是执行k-fold交叉验证,其中k = 5。我想获得每个结果的准确性,然后获得平均准确性。 在scikit-learn中,这是如何完成的,其中scores将为您提供每个折叠的结果,然后您可以使用scores.mean()
scores = cross_val_score(classifier, y, x, cv=5, scoring='accuracy')
这是我在Spark中的做法,paramGridBuilder为空,因为我不想输入任何参数。
val paramGrid = new ParamGridBuilder().build()
val evaluator = new MulticlassClassificationEvaluator()
evaluator.setLabelCol("label")
evaluator.setPredictionCol("prediction")
evaluator.setMetricName("precision")
val crossval = new CrossValidator()
crossval.setEstimator(classifier)
crossval.setEvaluator(evaluator)
crossval.setEstimatorParamMaps(paramGrid)
crossval.setNumFolds(5)
val modelCV = crossval.fit(df4)
val chk = modelCV.avgMetrics
你所做的与scikit learn实现是相同的吗?为什么在进行交叉验证时要使用训练/测试数据?