python寻找最佳阈值
时间: 2023-12-23 16:28:05 浏览: 83
在Python中,可以使用ROC曲线来寻找最佳阈值。以下是一个示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
# 假设有一组真实标签和预测概率
y_true = np.array([0, 0, 1, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8, 0.9])
# 计算ROC曲线的FPR和TPR
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
# 计算AUC值
roc_auc = auc(fpr, tpr)
# 绘制ROC曲线
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--') # 绘制对角线
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
# 找到最佳阈值
index = np.argmax(tpr - fpr)
threshold_optimal = thresholds[index]
print("最佳阈值为:", threshold_optimal)
```
这段代码首先使用`roc_curve`函数计算出ROC曲线的FPR和TPR,然后使用`auc`函数计算出AUC值。接下来,使用`plt.plot`函数绘制ROC曲线,并使用`plt.show`函数显示图形。最后,使用`np.argmax`函数找到TPR和FPR差异最大的点所对应的索引,从而得到最佳阈值。
阅读全文