python根据cm计算准确率
时间: 2023-08-09 12:12:40 浏览: 105
计算准确率通常是在机器学习模型评估中使用的一种指标。在Python中,可以使用以下代码根据cm(混淆矩阵)来算准确率:
```python
def accuracy(cm):
# 计算正确分类的总数
correct = sum([cm[i][i] for i in range(len(cm))])
# 计算总样本数
total = sum(sum(cm[i]) for i in range(len(cm)))
# 计算准确率
accuracy = correct / total
return accuracy
```
其中,`cm`是一个混淆矩阵,它是一个二维数组,表示模型在不同类别上的分类结果。`cm[i][j]`表示真实类别为i的样本被预测为类别j的数量。
你可以将混淆矩阵传递给`accuracy`函数来计算准确率。例如,如果有如下混淆矩阵:
```python
cm = [[50, 5], [10, 35]]
```
调用`accuracy(cm)`将返回准确率。
相关问题
python机器学习准确率计算函数
在机器学习中,我们通常使用混淆矩阵来计算模型的准确率。混淆矩阵是一个二维数组,用于比较模型的预测结果与实际结果。通常情况下,混淆矩阵的维度为2x2,其中行表示实际类别,列表示预测类别。
以下是一个计算准确率的Python函数示例,使用了混淆矩阵来计算准确率和其他性能指标:
```python
from sklearn.metrics import confusion_matrix
def calculate_accuracy(y_true, y_pred):
# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)
# 计算准确率
accuracy = (cm[0][0] + cm[1][1]) / sum(sum(cm))
# 计算精确率
precision = cm[0][0] / (cm[0][0] + cm[1][0])
# 计算召回率
recall = cm[0][0] / (cm[0][0] + cm[0][1])
# 计算F1值
f1_score = 2 * precision * recall / (precision + recall)
return accuracy, precision, recall, f1_score
```
其中,`y_true`是实际标签,`y_pred`是模型预测的标签。该函数使用 `confusion_matrix` 函数计算混淆矩阵,然后根据混淆矩阵计算准确率、精确率、召回率和 F1 值。你可以根据需要修改该函数以计算其他性能指标。
Python 多分类的准确率
多分类问题的准确率可以通过混淆矩阵进行计算。假设有 $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 的样本数]]
```
阅读全文