Как сравнить два разных истинных или ложных столбца и получить матрицу путаницы? питон

Итак, у меня есть 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

Это фрейм данных pandas?

Michael Sohnen 24.11.2022 02:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете сделать это с помощью 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()

и так далее...

Другие вопросы по теме

Похожие вопросы

Почему моя программа Python возвращает пустую информацию вместо того, чтобы распечатать мой файл?
Панды; Попытка разбить строку в столбце с помощью | , а затем перечислить все строки, удалив все дубликаты
Numpy "linalg.eig()" и "linalg.eigh()" для одной и той же эрмитовой матрицы
Команда Discord.py для воспроизведения звука в ВК и команда для выхода из ВК с помощью команд взаимодействия/косой черты. НЕ ctx или 'команды discord.ext'
Как интегрировать сервис голосового API Twilio с хранилищем AWS S3?
Ошибки с плавающей запятой в кубическом корне точного кубического ввода
Yarl/_quoting.c:196:12: фатальная ошибка: файл 'longintrepr.h' не найден - сгенерирована 1 ошибка
Почему `np.sum([-np.Inf, +np.Inf])` предупреждает о «недопустимом значении, обнаруженном при уменьшении»
Многопроцессорная звездная карта создает дубликаты объектов
Как написать код Python для создания итальянских автомобильных номеров?