python最优阈值计算代码
时间: 2024-12-12 09:23:55 浏览: 17
在Python中,选择最优阈值通常涉及到二分类问题中的性能度量优化。例如,如果我们有一个预测结果和对应的标签,我们可能会使用ROC曲线(接收者操作特征曲线)上的某个点作为阈值,比如F1分数的最大值、AUC-ROC(曲线下面积)最大化等。这里有一个简单的例子,假设你已经有了一个`y_pred`(预测概率)列表和`y_true`(真实标签):
```python
from sklearn.metrics import roc_curve, auc, f1_score
import numpy as np
# 假设y_pred是一个一维数组,每个元素是对应样本的概率
y_pred = ... # 预测概率列表
y_true = ... # 真实标签列表
# 计算每个预测概率对应的真阳性率和假阳性率
fpr, tpr, _ = roc_curve(y_true, y_pred)
# 计算F1分数,这个是我们的评估指标
f1_scores = [f1_score(y_true, (y_pred > threshold).astype(int)) for threshold in range(0, 100)]
# 找到F1得分最大的阈值
optimal_threshold = np.argmax(f1_scores)
optimal_f1 = f1_scores[optimal_threshold]
# 使用该阈值划分预测结果
thresholded_predictions = (y_pred > optimal_threshold).astype(int)
print(f"最优阈值:{optimal_threshold}")
print(f"最优F1分数:{optimal_f1}")
阅读全文