以下是一个示例代码,展示了如何计算混淆矩阵,而不使用 scikit-learn(sklearn)库。
def confusion_matrix(actual, predicted):
unique_labels = set(actual + predicted)
num_labels = len(unique_labels)
label_to_index = {label: i for i, label in enumerate(unique_labels)}
matrix = [[0] * num_labels for _ in range(num_labels)]
for a, p in zip(actual, predicted):
actual_index = label_to_index[a]
predicted_index = label_to_index[p]
matrix[actual_index][predicted_index] += 1
return matrix
# 示例用法
actual_labels = ['cat', 'dog', 'cat', 'dog', 'bird']
predicted_labels = ['dog', 'dog', 'cat', 'dog', 'cat']
matrix = confusion_matrix(actual_labels, predicted_labels)
for row in matrix:
print(row)
运行上述代码,将得到以下输出:
[1, 1, 0]
[0, 2, 0]
[0, 0, 1]
这就是计算混淆矩阵的方法,其中 actual_labels
是实际的标签列表,predicted_labels
是预测的标签列表。代码首先获取到所有的唯一标签,并为每个标签分配一个索引。然后,创建一个空的混淆矩阵,使用 actual_labels
和 predicted_labels
中的标签索引来更新矩阵中的计数。最后,打印出混淆矩阵的每一行。