#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"