Расчет путаницы для двух текстовых файлов

Я хотел бы рассчитать матрицу путаницы для двух текстовых файлов. Кто-нибудь знает библиотеку или инструмент в Python или сценарий оболочки, который может сделать это?

например у меня есть два файла

ФАЙЛ А:

1
1
2
2

ФАЙЛ B:

2
2
2
2

Где я мог бы получить путаницу матрицы:

   1   2
--------
1| 0   2
2| 0   2

Обновление: я хотел бы отметить, что оригинальный пост включает в себя заголовки строк и столбцов

1 ответ

Решение

Это, вероятно, излишне, но scikit-learn сделает это довольно легко:

from sklearn.metrics import confusion_matrix

# Read the data
with open('file1', 'r') as infile:
    true_values = [int(i) for i in infile]
with open('file2', 'r') as infile:
    predictions = [int(i) for i in infile]

# Make confusion matrix
confusion = confusion_matrix(true_values, predictions)

print(confusion)

С выходом

[[0 2]
 [0 2]]

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html

Обновление: чтобы печатать с этикетками, вы можете либо преобразовать в фрейм данных с пандами, либо что-то вроде этого:

def print_confusion(confusion):
    print('   ' + '  '.join([str(n) for n in range(confusion.shape[1])]))
    for rownum in range(confusion.shape[0]):
        print(str(rownum) + '  ' + '  '.join([str(n) for n in confusion[rownum]]))

который печатает

   0  1
0  0  2
1  0  2
Другие вопросы по тегам