Ho qualche problema a capire la convalida incrociata di Spark. Qualsiasi esempio che ho visto lo usa per la sintonizzazione dei parametri, ma ho pensato che avrebbe fatto anche la normale convalida incrociata K-fold?Spark K-fold Cross Validation
Quello che voglio fare è eseguire la convalida incrociata k-fold, dove k = 5. Voglio ottenere la precisione per ogni risultato e quindi ottenere la precisione media. In scikit imparare questo è come sarebbe stato fatto, dove i punteggi darebbe il risultato per ogni piega, e quindi è possibile utilizzare scores.mean()
scores = cross_val_score(classifier, y, x, cv=5, scoring='accuracy')
Ecco come sto facendo in Spark, paramGridBuilder è vuoto in quanto non voglio inserire alcun parametro.
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
È questo che fa lo scikit apprendere l'implementazione? Perché gli esempi utilizzano i dati di addestramento/test quando si effettua la convalida incrociata?
How to cross validate RandomForest model?