Итак, у меня есть 2 разных истинных или ложных результата, которые проверяли один и тот же столбец. Таким образом, тест 1 дает неправильные результаты, а тест 2 дает правильные результаты. Есть ли код Python, который может сравнить эти два результата и получить результат матрицы путаницы (истинные срабатывания, ложные срабатывания, ложные отрицания и истинные отрицания)?
Например:
Test1
a True
b True
c False
d False
e True
f True
g True
Test2
a True
b True
c True
d True
e True
f True
g False
Вы можете сделать это с помощью numpy
Я проигнорирую тот факт, что в тестах есть буквы, и вместо этого просто использую массив
#assume:
#reponses = [...list of booleans...]
#ground_truth = [...list of booleans...]
import numpy as np
responses = np.array(responses)
ground_truth = np.array(ground_truth)
true_positives = np.logical_and(responses,ground_truth)
true_negatives = np.logical_and(np.logical_not(responses),np.logical_not(ground_truth))
false_positives = np.logical_and(responses,np.logical_not(ground_truth))
false_negatives = np.logical_and(np.logical_not(responses),ground_truth)
num_true_positives = np.count_nonzero(true_positives)
num_true_negatives = np.count_nonzero(true_negatives)
num_false_positive = np.count_nonzero(false_positives)
num_false_negatives = np.count_nonzero(false_negatives)
confusion_matrix = np.array([
[num_true_positives,num_false_positives],
[num_true_negatives,num_false_negatives]
])
Я не уверен, что это правильное соглашение для матрицы путаницы, но вы можете изменить его в своем собственном коде.
P.S.:
Вы также можете использовать sklearn: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html
Есть ли код Python, который может сравнить эти два результата и получить результат матрицы путаницы (истинные срабатывания, ложные срабатывания, ложные отрицания и истинные отрицания)?
Предполагая, что Test1
и Test2
являются объектами Pandas Series,
Настоящие плюсы: Test1 & Test2
Ложные срабатывания: Test1 & (Test2 == False)
Ложноотрицательные: (Test1==False) & Test2
Истинные минусы: (Test1==False) & (Test2==False)
Чтобы получить количество истинных значений в серии, используйте Series.count()
. Например, количество истинных положительных результатов будет (Test1 & Test2).count()
.
Предполагая, что вам нужна матрица путаницы в виде массива numpy, вы просто заполните ячейки соответствующим образом:
confusion = np.zeros((2,2))
confusion[0,0] = (Test1 & Test2).count()
и так далее...
Это фрейм данных pandas?