受试者工作特征曲线roc matlab代码
时间: 2023-08-02 21:02:42 浏览: 122
在MATLAB中,可以使用以下代码来绘制受试者工作特征曲线(ROC曲线):
假设我们有一组真实标签(ground truth)和一组预测概率(predicted scores):
```matlab
% 真实标签
true_labels = [0 1 1 0 1 1 0 0 1];
% 预测概率
predicted_scores = [0.2 0.6 0.8 0.3 0.9 0.7 0.4 0.1 0.5];
```
首先,需要根据预测概率和真实标签计算不同阈值下的真阳性率(True Positive Rate,TPR)和假阳性率(False Positive Rate,FPR):
```matlab
% 根据阈值计算TPR和FPR
thresholds = unique(predicted_scores);
n_thresholds = length(thresholds);
TPR = zeros(n_thresholds, 1);
FPR = zeros(n_thresholds, 1);
for i = 1:n_thresholds
threshold = thresholds(i);
TP = sum(predicted_scores >= threshold & true_labels == 1);
FN = sum(predicted_scores < threshold & true_labels == 1);
FP = sum(predicted_scores >= threshold & true_labels == 0);
TN = sum(predicted_scores < threshold & true_labels == 0);
TPR(i) = TP / (TP + FN);
FPR(i) = FP / (FP + TN);
end
```
然后,可以使用`plot`函数将TPR和FPR绘制成ROC曲线:
```matlab
% 绘制ROC曲线
plot(FPR, TPR, 'b-', 'LineWidth', 2);
grid on;
xlabel('False Positive Rate');
ylabel('True Positive Rate');
title('Receiver Operating Characteristic (ROC) Curve');
axis square;
```
最后,可以使用`axis([0 1 0 1])`函数设置坐标轴范围为[0,1],以确保ROC曲线在图像中正确显示:
```matlab
% 设置坐标轴范围
axis([0 1 0 1]);
```
这样就可以得到一个用于评估分类器性能的ROC曲线。
阅读全文