Как найти все истинно положительные, отрицательные, ложные и отрицательные с учетом всех классов - PullRequest
1 голос
/ 11 июля 2020

Я могу сделать то же самое для меньшего набора данных, где я знаю желаемые результаты

Например: у меня есть набор данных:

y_true=[1,1,0,1]
y_pred=[1,0,0,0]

Я могу написать функцию для найти все истинные и ложные срабатывания и отрицания:

def measures(y_pred, y_true):
    TP = 0
    FP = 0
    TN = 0
    FN = 0

    for i in range(len(y_pred)): 
        if y_true[i]==y_pred[i]==1:
           TP += 1
        if y_pred[i]==1 and y_true[i]!=y_pred[i]:
           FP += 1
        if y_true[i]==y_pred[i]==0:
           TN += 1
        if y_pred[i]==0 and y_true[i]!=y_pred[i]:
           FN += 1

    return(TP, FP, TN, FN)

Но что, если я собираюсь найти то же самое для нескольких меток, примерно так:

y_true=[1,2,0,1,3]
y_pred=[1,0,3,2,1]

Итак, я хочу найти все TP_total, TN_total, FP_total и FN_total с учетом каждой метки '1','2','0','3'

Как я могу это сделать

Ответы [ 2 ]

3 голосов
/ 11 июля 2020

Поскольку вы отметили Scikit-Learn в своем вопросе, вы можете получить очень хорошее представление об истинных / ложных положительных и отрицательных результатах в дополнение к различным классификационным показателям, таким как точность, отзыв, точность, оценка F1 и поддержка. .. просто используя Отчет о классификации и Матрицу путаницы , которая возвращает то, что вы хотите (пример):

tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()

Или вы можете построить график, используя Plot Confusion Matrix .

( Примеры в ссылках )

Ниже приведены примеры: enter image description here

введите описание изображения здесь

2 голосов
/ 11 июля 2020

В Python пакет scikit-learn (https://scikit-learn.org/stable/index.html) предоставляет функцию, которая будет возвращать матрицу путаницы задачи классификации (двоичной или многоклассовой), функцию confusion_matrix (см. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html). С помощью матрицы путаницы вы можете получить истинные положительные, истинные отрицательные, ложные и ложные отрицательные результаты для вашей проблемы.

Рисунок ниже (полученный из https://scikit-learn.org/stable/auto_examples/miscellaneous/plot_display_object_visualization.html#sphx -glr-auto-examples-miscellaneous- plot-display-object-visualization-py ) иллюстрирует матрицу путаницы для двоичной классификации, созданную с помощью scikit-learn. На рисунке ложные срабатывания находятся в верхнем левом углу (140), истинные срабатывания - в правом нижнем углу (5), ложноотрицательные результаты - в нижнем левом углу (39) и ложные срабатывания - в верхнем правом углу (3).

Матрица неточностей - двоичная классификация

В условиях нескольких классов интерпретация аналогична. Однако ваши ошибки будут связаны с несколькими классами, а не только с одним классом (например, при настройке двоичной классификации).

Надеюсь, это может помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...