2016-11-11 11 views
0

스파크 파이프 라인에서 평가자의 결과를 얻으려면 어떻게해야합니까?스파크 파이프 라인 평가

val evaluator = new BinaryClassificationEvaluator() 

val cv = new CrossValidator() 
    .setEstimator(pipeline) 
    .setEvaluator(evaluator) 
    .setEstimatorParamMaps(paramGrid) 
    .setNumFolds(10) 

변환 연산의 결과는 단지 라벨 확률 및 예측을 포함한다.

"최상의 모델"을 얻을 수도 있지만 평가 척도를 얻는 데 관심이 있습니다.

여기서 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-mllib/spark-mllib-evaluators.html은 파이프 라인없이 평가자를 사용하는 방법을 보여줍니다.

매우 흥미로운 링크 중 어느 것도 evaluator을 사용하지 않는 것 같습니다. https://benfradet.github.io/blog/2015/12/16/Exploring-spark.ml-with-the-Titanic-Kaggle-competition, 여기 https://developer.ibm.com/spark/blog/2016/02/22/predictive-model-for-online-advertising-using-spark-machine-learning-pipelines/ 또는 공식 사례 https://github.com/apache/spark/blob/39e2bad6a866d27c3ca594d15e574a1da3ee84cc/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala은 마침내 표시된 평가자의 결과입니다.

는 실제로 링크 중 하나는 손으로 메트릭을 계산합니다

cvAccuracy = cvPrediction.filter(cvPrediction['label'] == cvPrediction['prediction']).count()/float(cvPrediction.count 
I가 반환 한 배 수준 또는 가능 평균/분산에 대한 통계를 얻을 것으로 예상했을 것이다

.

+0

입니까? – mtoto

+0

정렬 방법. 매개 변수 설정 A 또는 알고리즘 B가 다른 설정/알고리즘보다 나은지 확인하고 싶습니다. –

답변

1

CrossValidatorModel에는 폴드 전체에서 가장 높은 평균 교차 유효성 검사 메트릭 (균등 칭칭 bestModel)이 포함되어있을뿐만 아니라 평가 된 각 매개 변수 맵의 메트릭도 포함됩니다.

이 잡아하려면, 당신은 예를 들어, avgMetrics와 조합 getEstimatorParamMaps 방법을 사용할 수 있습니다 : 당신은`paramGrid` 값 당 성능 메트릭에 관심이

val cvModel = cv.fit(training) 
cvModel.getEstimatorParamMaps.zip(cvModel.avgMetrics) 
+1

대단히 고마워요. 제가 찾고있는 것뿐입니다. –

+0

그러나 variance/std-dev에 관한 메트릭을 얻을 수 있습니까? –