2016-08-17 6 views

답변

0

,이 같은 반복 자신을 수행 할 수 있습니다

val splits = MLUtils.kFold(dataset.toDF.rdd, $(numFolds), $(seed)) 
    //K-folding operation starting 
    //for each fold you have multiple models created cfm. the paramgrid 
    splits.zipWithIndex.foreach { case ((training, validation), splitIndex) => 
     val trainingDataset = sparkSession.createDataFrame(training, schema).cache() 
     val validationDataset = sparkSession.createDataFrame(validation, schema).cache() 


     val models = est.fit(trainingDataset, epm).asInstanceOf[Seq[Model[_]]] 
     trainingDataset.unpersist() 
     var i = 0 
     while (i < numModels) { 
     val metric = eval.evaluate(models(i).transform(validationDataset, epm(i))) 
     logDebug(s"Got metric $metric for model trained with ${epm(i)}.") 
     metrics(i) += metric 
     i += 1 
     } 

이 스칼라에 있지만 아이디어를 매우 명확하게 설명되어 있습니다.

접기 당 결과를 요약 한 this answer을 살펴보십시오. 희망이 도움이됩니다.