我有一个标签Y和一个预测输出out给我一个完整的代码
时间: 2024-03-25 18:40:37 浏览: 16
好的,以下是一个简单的 MATLAB 代码示例,用于计算二分类问题中的准确率、召回率和 F1 值,并绘制 ROC 曲线和 PR 曲线:
```matlab
% 生成标签和预测输出
Y = randi([0 1],100,1);
out = rand(100,1);
% 计算准确率、召回率和 F1 值
tp = sum(Y == 1 & out > 0.5);
fp = sum(Y == 0 & out > 0.5);
tn = sum(Y == 0 & out <= 0.5);
fn = sum(Y == 1 & out <= 0.5);
accuracy = (tp + tn) / (tp + fp + tn + fn);
precision = tp / (tp + fp);
recall = tp / (tp + fn);
f1 = 2 * precision * recall / (precision + recall);
% 绘制 ROC 曲线和 PR 曲线
[X,Y,T,AUC] = perfcurve(Y,out,1);
figure;
subplot(1,2,1);
plot(X,Y);
xlabel('False positive rate');
ylabel('True positive rate');
title(['ROC curve (AUC = ' num2str(AUC) ')']);
subplot(1,2,2);
plot(T,X);
hold on;
plot(T,Y);
xlabel('Threshold');
ylabel('Precision/Recall');
title('PR curve');
legend('Precision','Recall');
```
在这个示例中,我们首先生成了一个随机的标签向量 `Y` 和一个随机的预测输出向量 `out`。接着,我们根据二分类问题中的 TP、FP、TN 和 FN 定义计算了准确率、召回率和 F1 值。最后,我们使用 `perfcurve` 函数计算了 ROC 曲线和 PR 曲线,并绘制了它们。