编写分类性能度量的函数 my_metrics(y,y_predict), 要求(不使用 sklearn)返回准确度、精确率、召回率和 F1 score
时间: 2024-10-29 18:12:35 浏览: 18
ANN.zip_sklearn_sklearn ANN_skleran ann_神经网络 分类
5星 · 资源好评率100%
我们可以编写一个名为`my_metrics`的函数,用于计算分类任务的常用性能指标:准确度、精确率、召回率和F1分数。这里我们假设输入的是真实的标签数组`y`和预测的标签数组`y_predict`,并且它们都是一维整数数组。
```python
def my_metrics(y, y_predict):
"""
计算分类任务的性能指标(不使用sklearn)
参数:
y (array): 真实的标签数组
y_predict (array): 预测的标签数组
返回:
accuracy (float): 准确度
precision (float): 精确率
recall (float): 召回率
f1_score (float): F1分数
示例:
y_true = [0, 1, 0, 1, 1]
y_pred = [0, 0, 0, 1, 1]
metrics = my_metrics(y_true, y_pred)
"""
TP = TN = FP = FN = 0 # True Positive, True Negative, False Positive, False Negative
for i in range(len(y)):
if y[i] == y_predict[i]:
if y[i] == 1: # 正例
TP += 1
else: # 负例
TN += 1
else:
if y[i] == 1: # 实际正例被误判为负例
FN += 1
else: # 实际负例被误判为正例
FP += 1
# 计算指标
accuracy = (TP + TN) / len(y)
precision = TP / (TP + FP) if TP + FP != 0 else 0
recall = TP / (TP + FN) if TP + FN != 0 else 0
f1_score = (2 * precision * recall) / (precision + recall) if precision + recall != 0 else 0
return accuracy, precision, recall, f1_score
# 示例
y_true = [0, 1, 0, 1, 1]
y_pred = [0, 0, 0, 1, 1]
metrics = my_metrics(y_true, y_pred)
```
在这个函数中,我们遍历每个样本,根据真实标签和预测标签更新计数值。然后,利用这些计数计算各个性能指标。
阅读全文