Кривая ROC для дерева решений

Я пытаюсь построить кривую ROC для дерева решений. Но при вычислении матрицы неточностей вычисление каждого порога занимает слишком много времени. Итак, есть ли лучший способ вычислить матрицу.


person Emma Vaze    schedule 28.09.2020    source источник


Ответы (2)


в вашем методе confusion_matrix вы можете кэшировать прогнозы для оптимизации производительности

 def confusion_matrix(predictions):
     # Calculate the elements of the confusion matrix
    predictions.cache()
    TN = predictions.filter('prediction = 0 AND label = 0').count()
    TP = predictions.filter('prediction = 1 AND label = 1').count()
    FN = predictions.filter('prediction = 0 AND label = 1').count()
    FP = predictions.filter('prediction = 1 AND label = 0').count()
    predictions.unpersist()
    return TP,TN,FP,FN

Удачи!

person Michael Fu    schedule 30.09.2020

Я предлагаю вам использовать реализацию scikit-learn, вам просто нужно предоставить массив с истинными значениями, а другой с прогнозами: sklearn.metrics.roc_curve

person Hugo Guillen    schedule 28.09.2020
comment
OP явно находится в среде больших данных: они используют Pyspark, что подразумевает, что задействованные фреймы данных не могут поместиться в памяти одной машины, поэтому scikit-learn здесь не применим. - person desertnaut; 28.09.2020