Как посчитать появление истинных позитивов с помощью панд или numpy? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть две колонки, Предсказание и Основа Правды.Я хочу получить количество истинных позитивов в виде серии, используя numpy или pandas.

Например, мои данные:

Prediction GroundTruth
True       True
True       False
True       True
False      True
False      False
True       True

Мне нужен список, который должен иметь следующий вывод:

tp_list = [1,1,2,2,2,3]

Есть ли однострочный способ сделать это в numpy или pandas?

В настоящее время это мое решение:

tp = 0
for p, g in zip(data.Prediction, data.GroundTruth):
  if p and g: # TP case
    tp = tp + 1
  tp_list.append(tp)

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Чтобы получить текущий счет (т. Е. Накопленную сумму) истинных положительных значений , т. Е. Prediction == True тогда и только тогда, когда GroundTruth == True, решение представляет собой модификацию ответа @ RafaelC:

(df['Prediction'] & df['GroundTruth']).cumsum()
0    1
1    1
2    2
3    2
4    2
5    3

(df['Prediction'] & df['GroundTruth']).cumsum().tolist()
[1, 1, 2, 2, 2, 3]
0 голосов
/ 21 ноября 2018

Может быть, вы можете использовать all

df.all(1).cumsum().tolist()
Out[156]: [1, 1, 2, 2, 2, 3]

numpy решение

np.cumsum(np.all(df.values,1))
Out[159]: array([1, 1, 2, 2, 2, 3], dtype=int32)
0 голосов
/ 21 ноября 2018

Если вы хотите узнать, сколько True вы предсказали, что на самом деле True, используйте

(df['Prediction'] & df['GroundTruth']).cumsum()

0    1
1    1
2    2
3    2
4    2
5    3
dtype: int64

(спасибо @Peter Leimbigiler за включение)

Если вы хотитечтобы узнать, сколько вы предсказали правильно, просто сравните и используйте cumsum

(df['Prediction'] == df['GroundTruth']).cumsum()

, который выдает

0    1
1    1
2    2
3    2
4    3
5    4
dtype: int64

Всегда можно получить список с помощью .tolist()

(df4['Prediction'] == df4['GroundTruth']).cumsum().tolist()

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