Я хочу рассчитать точность, отзыв и точность в наборе данных - PullRequest
0 голосов
/ 30 октября 2019

У меня есть два набора данных: Predicted и Actual.

Алгоритм предсказывает максимум пять уникальных предопределенных параметров, которые находятся в Predicted. Предполагая, что параметры являются алфавитами от a до z. Итак, для одной строки я вижу, сколько из этих параметров было предсказано правильно.

Predicted:

Index P1 P2 P3 P4 P5

1     a  b  c  q

2     g

3     s  f  g  v  t


Actual:

Index P1 P2 P3 P4 P5

1     a  s  q  r  t  

2     g

3     t  v

код для генерации этих фреймов данных:

import pandas as pd

predicted = pd.DataFrame.from_records(columns =['P'+str(i) for i in range(1,6)],
                                      data=[['a','b','c','q'],['g'], ['s','f','g','v','t']])


actual = pd.DataFrame.from_records(columns =['P'+str(i) for i in range(1,6)],
                                      data=[['a','s','q','r','t'],['g'], ['t','v']])
For Row1: Correctly predicted parameters: a,q
For Row2: Correctly predicted parameters: g
For Row3: Correctly predicted parameters: t,v

Как рассчитать точность,Напомним и Точность для того же?

1 Ответ

0 голосов
/ 04 ноября 2019

Чтобы вычислить точность здесь, вам просто нужно подсчитать количество случаев, когда прогнозируемый параметр соответствовал фактическому параметру, игнорируя случаи, когда они оба были None. Множество способов сделать это, я бы выбрал этот простой вариант:

accuracy = ((predicted==actual) & (predicted.notna() | actual.notna())).sum().sum() / (predicted.notna() | actual.notna()).sum().sum()

Вы можете проверить, что он соответствует желаемому результату (2/11).

Точность / отзыв являетсянемного сложнее для мультиклассовых данных - вы можете сделать это для каждой метки, но вам точно не хватает данных здесь. Я бы придерживался точности для этого случая ...

PS Я предположил, что ваш расчет точности довольно прост. Если это не так - это должно быть явно указано в вашем вопросе ...

...