Получение всех оценочных показателей после классификации в pyspark

#machine-learning #pyspark #apache-spark-ml #multiclass-classification

#машинное обучение #pyspark #apache-spark-ml #мультикласс-классификация

Вопрос:

Я обучил модель и хочу рассчитать несколько важных показателей, таких как accuracy , precision , recall , и f1 score .

Процесс, которому я следовал, таков:

 from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(featuresCol='features',labelCol='label')
lrModel = lr.fit(train)
lrPredictions = lrModel.transform(test)

from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.ml.evaluation import BinaryClassificationEvaluator

eval_accuracy = MulticlassClassificationEvaluator(labelCol="label", predictionCol="prediction", metricName="accuracy")
eval_precision = MulticlassClassificationEvaluator(labelCol="label", predictionCol="prediction", metricName="precision")
eval_recall = MulticlassClassificationEvaluator(labelCol="label", predictionCol="prediction", metricName="recall")
eval_f1 = MulticlassClassificationEvaluator(labelCol="label", predictionCol="prediction", metricName="f1Measure")

eval_auc = BinaryClassificationEvaluator(labelCol="label", rawPredictionCol="prediction")

accuracy = eval_accuracy.evaluate(lrPredictions)
precision = eval_precision.evaluate(lrPredictions)
recall = eval_recall.evaluate(lrPredictions)
f1score = eval_f1.evaluate(lrPredictions)

auc = eval_accuracy.evaluate(lrPredictions)
  

Однако он может вычислять только accuracy и auc , но не три других. Что я должен здесь изменить?

Ответ №1:

Согласно документам, для измерения F1, точности и отзыва соответствующие аргументы MulticlassClassificationEvaluator должны быть соответственно

 metricName="f1"
metricName="precisionByLabel"
metricName="recallByLabel"