2

나는 ML 파이프 라인, 같은 것을 사용하고 있습니다 : I가이 모델에 Precision, Recall, AUC-ROC, F1-SCORE, ACCURACY 같은 표준 메트릭을 얻을 수있는 방법입니다 원하는 것은ML 파이프 라인 및 측정 : 정밀, 리콜, AUC-ROC, F1Score

VectorAssembler assembler = new VectorAssembler() 
       .setInputCols(columns) 
       .setOutputCol("features"); 
LogisticRegression lr = new LogisticRegression().setLabelCol(targetColumn); 
     lr.setMaxIter(10).setRegParam(0.01).setFeaturesCol("features"); 

Pipeline logisticRegression = new Pipeline(); 
logisticRegression.setStages(new PipelineStage[] {assembler, lr}); 
PipelineModel logisticRegressionModel = logisticRegression.fit(learningData); 

을 . BinaryClassificationMetrics을 찾았습니다. 호환되는지는 확실하지 않습니다. RegressionEvaluatormse|rmse|r2|mae (으)로만 반환됩니다.

그래서 ML 파이프 라인을 사용하여 Precision, Recall 등을 추출하는 올바른 방법은 무엇입니까? 데이터를 득점 한 번

+0

유용한 해결책을 찾기 때문에 프로그래밍 정밀, 리콜, F1Score 손 정확도 (계산 결국 수 없습니다 tp, fp, fn, tn) –

답변

0

, 예측 및 레이블을 얻을 아래와 같이 BinaryClassificationMetrics에

뭔가를 되었 https://spark.apache.org/docs/latest/mllib-evaluation-metrics.html#binary-classification

에서

val scoredTestSet = logisticRegressionModel.transform(testSet) 
val predictionLabelsRDD = scoredTestSet.select("prediction", "label").map(r => (r.getDouble(0), r.getDouble(1))) 
val binMetrics = new BinaryClassificationMetrics(predictionAndLabels) 
// binMetrics.areaUnderROC 

다른 예 (생각이 스칼라에있어 나는 그것이 도움이되기를 바랍니다) 이 경우의

예측은 1.0 또는 0.0 입니다. binMetrics가 여러 임계 값에 대한 데이터를 표시 할 수 있도록 예측 대신 확률을 추출하여 사용할 수도 있습니다

1

위의 라이언의 대답에서 누락 된 몇 가지.

나는 (참고 : 내 유스 케이스는 멀티 클래스 분류했다) 다음 작품을 확인할 수 있습니다

val scoredTestSet = model.transform(testSet) 
val predictionLabelsRDD = scoredTestSet.select("prediction", "label").rdd.map(r => (r.getDouble(0), r.getDouble(1))) 
val multiModelMetrics = new MulticlassMetrics(predictionAndLabelsRDD)