怎么用python计算准确率,召回率。f1值
时间: 2024-02-13 09:07:29 浏览: 18
计算准确率、召回率、F1值需要先有真实值和预测值。假设我们有以下数据:
```python
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 1] # 真实值
y_pred = [1, 0, 0, 1, 0, 1, 0, 1, 1, 0] # 预测值
```
其中,`y_true` 为真实值,`y_pred` 为预测值。下面是如何计算准确率、召回率和F1值的代码:
```python
from sklearn.metrics import accuracy_score, recall_score, f1_score
accuracy = accuracy_score(y_true, y_pred) # 准确率
recall = recall_score(y_true, y_pred) # 召回率
f1 = f1_score(y_true, y_pred) # F1值
print("准确率:", accuracy)
print("召回率:", recall)
print("F1值:", f1)
```
输出结果为:
```
准确率: 0.6
召回率: 0.6666666666666666
F1值: 0.625
```
其中,准确率为0.6表示预测的结果中有60%是正确的,召回率为0.67表示真实值中有67%被正确地预测出来,F1值为0.625表示准确率和召回率的加权调和平均数。
相关问题
python准确率精确召回f1
在机器学习中,准确率(Accuracy)、精确率(Precision)、召回率(Recall)和 F1 值(F1-score)是常用的评价指标。其中,准确率指分类器正确分类的样本数占总样本数的比例;精确率指分类器预测为正例的样本中,真正为正例的样本数占预测为正例的样本数的比例;召回率指真正为正例的样本中,被分类器预测为正例的样本数占真正为正例的样本数的比例;F1 值是精确率和召回率的调和平均数。
在 Python 中,可以使用 scikit-learn 库中的 classification_report 函数来计算准确率、精确率、召回率和 F1 值。该函数需要输入真实标签和预测标签两个参数,示例如下:
```python
from sklearn.metrics import classification_report
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
```
输出结果如下:
```
precision recall f1-score support
class 0 0.67 1.00 0.80 2
class 1 0.00 0.00 0.00 2
class 2 1.00 0.50 0.67 2
accuracy 0.50 6
macro avg 0.56 0.50 0.49 6
weighted avg 0.56 0.50 0.49 6
```
其中,precision、recall 和 f1-score 分别表示精确率、召回率和 F1 值,support 表示每个类别的样本数,accuracy 表示准确率。
计算准确率,召回率,F1分数的代码
以下是一个示例代码,演示如何计算准确率,召回率和F1分数:
```python
# 实际标签
y_true = [0, 1, 1, 0, 1, 0, 1, 0, 1, 1]
# 预测标签
y_pred = [0, 1, 0, 1, 1, 1, 1, 0, 0, 1]
# 计算TP、FP、TN、FN四个值
TP = sum([1 for i in range(len(y_true)) if y_true[i]==1 and y_pred[i]==1])
FP = sum([1 for i in range(len(y_true)) if y_true[i]==0 and y_pred[i]==1])
TN = sum([1 for i in range(len(y_true)) if y_true[i]==0 and y_pred[i]==0])
FN = sum([1 for i in range(len(y_true)) if y_true[i]==1 and y_pred[i]==0])
# 计算准确率、召回率、F1分数
precision = TP / (TP + FP)
recall = TP / (TP + FN)
F1_score = 2 * precision * recall / (precision + recall)
print("Precision: {:.2f}".format(precision))
print("Recall: {:.2f}".format(recall))
print("F1 score: {:.2f}".format(F1_score))
```
输出结果为:
```
Precision: 0.67
Recall: 0.71
F1 score: 0.69
```
说明:
- 准确率(precision):指模型预测为正例的样本中,真正为正例的比例,也就是TP / (TP + FP)。
- 召回率(recall):指真正为正例的样本中,被模型正确预测为正例的比例,也就是TP / (TP + FN)。
- F1分数:综合考虑准确率和召回率的指标,也就是2 * precision * recall / (precision + recall)。其值越高,说明模型的性能越好。