Метрики оценки в задаче мультиклассовой классификации Spark ML

Я ищу пример классификации Multiclass с использованием Spark-Scala, но пока не могу его найти. В частности, я хочу обучить модель классификации и увидеть все связанные метрики по обучающим и тестовым данным.

Поддерживает ли Spark ML (API на основе DataFrame) матрицу путаницы для мультиклассовых проблем?

Я ищу примеры Spark v 2.2 и выше. Сквозной пример был бы действительно полезен. Я не могу найти здесь оценку матрицы путаницы -

https://spark.apache.org/docs/2.3.0/ml-classification-regression.html


person Regressor    schedule 26.12.2018    source источник


Ответы (2)


это должно быть так:

val metrics = new MulticlassMetrics(predictionAndLabels)
println(metrics.confusionMatrix)

показатели классификации находятся здесь: https://spark.apache.org/docs/2.3.0/mllib-evaluation-metrics.html

person Matko Soric    schedule 29.12.2018
comment
спасибо за ссылку. Но доступны ли эти метрики и в API на основе Dataframe? Я имею в виду ml API. - person Regressor; 31.12.2018
comment
похоже, что это не так, но вы можете легко преобразовать DF в rdd: val rows: RDD[Row] = df.rdd - person Matko Soric; 01.01.2019

Предполагая, что model - ваша обученная модель, а test - набор тестов, это фрагмент кода для вычисления матрицы путаницы в python:

import pandas as pd
from pyspark.mllib.evaluation import MulticlassMetrics
predictionAndLabels = model.transform(test).select('label', 'prediction')
metrics = MulticlassMetrics(predictionAndLabels.rdd.map(lambda x: tuple(map(float, x))))

confusion_matrix = metrics.confusionMatrix().toArray()
labels = [int(l) for l in metrics.call('labels')]
confusion_matrix = pd.DataFrame(confusion_matrix , index=labels, columns=labels)

Обратите внимание, что metrics.labels по какой-то причине не реализован в pyspark, поэтому мы вызываем scala бэкэнд напрямую

person Uri Goren    schedule 30.09.2020