Python 多分类的准确率
时间: 2023-11-05 19:11:54 浏览: 96
多分类问题的准确率可以通过混淆矩阵进行计算。假设有 $n$ 个类别,混淆矩阵的大小为 $n \times n$。混淆矩阵的行表示真实标签,列表示预测标签。矩阵中第 $i$ 行第 $j$ 列的元素表示真实标签为 $i$,预测标签为 $j$ 的样本数。
例如,假设有三个类别 A、B、C,某个分类器对一组样本进行预测,结果如下表所示:
| | A | B | C |
|---|---|---|---|
| A | 5 | 1 | 0 |
| B | 2 | 4 | 1 |
| C | 1 | 0 | 6 |
其中,第一行表示真实标签为 A 的样本,第一列表示预测标签为 A 的样本。比如,真实标签为 A,预测标签为 B 的样本数为 $1$。
计算准确率的方法是将混淆矩阵对角线上的元素求和,再除以总样本数。对于上述例子,总样本数为 $20$,对角线上的元素之和为 $5+4+6=15$,因此准确率为 $15/20=0.75$。
在 Python 中,可以使用 scikit-learn 库的 confusion_matrix 和 accuracy_score 函数来计算混淆矩阵和准确率。具体用法可以参考下面的示例代码:
```python
from sklearn.metrics import confusion_matrix, accuracy_score
# 真实标签和预测标签
y_true = ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'C']
y_pred = ['A', 'B', 'C', 'A', 'B', 'B', 'A', 'B', 'C', 'A', 'A', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'C']
# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred, labels=['A', 'B', 'C'])
print(cm)
# 计算准确率
acc = accuracy_score(y_true, y_pred)
print(acc)
```
输出结果如下:
```
[[6 1 0]
[1 5 1]
[0 0 6]]
0.85
```
其中,混淆矩阵的输出表示为:
```
[[真实标签为 A,预测标签为 A 的样本数,真实标签为 A,预测标签为 B 的样本数,真实标签为 A,预测标签为 C 的样本数],
[真实标签为 B,预测标签为 A 的样本数,真实标签为 B,预测标签为 B 的样本数,真实标签为 B,预测标签为 C 的样本数],
[真实标签为 C,预测标签为 A 的样本数,真实标签为 C,预测标签为 B 的样本数,真实标签为 C,预测标签为 C 的样本数]]
```
阅读全文
相关推荐


















