我重生了,上一世因为没有好好学习,流浪街头,这一世,我要好好学习,逆天改命!
如今我修炼到达瓶颈,为了成功筑基必将修行pr与roc曲线等功法!
前传
目录
从knn秘境出来,我已经练气期大圆满,为了能成功筑基,我将修行PR与ROC功法!
一、PR曲线
1.何为PR曲线
所谓PR曲线是根据分类模型的预测结果,绘制出不同阈值下的精确率(Precision)和召回率(Recall)之间的关系曲线。精确率表示被正确预测为正例的样本数占所有预测为正例的样本数的比例,召回率表示被正确预测为正例的样本数占所有真实正例样本数的比例。
PR曲线功法分为下四部:
TP(True Positive):指正确分类的正样本数。
FP(False Positive):指被错误的标记为正样本的负样本数。
TN(True Negative):指正确分类的负样本数。
FN(False Negative):指被错误的标记为负样本的正样本数。
修行此法可以保证修行之路不会偏移,再无心魔可言。
2.如何计算PR曲线
为了修行PR曲线功法,我们需要通过调整分类模型的阈值来得到一系列不同的精确率和召回率值。首先,我们将预测结果按照置信度排序,然后从高到低逐个计算精确率和召回率。最后,将精确率作为纵轴,召回率作为横轴进行绘制,即可得到PR曲线。
3.运转功法
%matplotlib inline
from sklearn.metrics import precision_recall_curve, average_precision_score
import matplotlib.pyplot as plt
# 假设 y_test 和 y_score 分别表示测试集的真实标签和模型的分类结果(概率值)
y_test = [0, 0, 1, 1, 0, 1, 0, 1, 0, 1] # 真实标签
y_score = [0.1, 0.4, 0.35, 0.8, 0.2, 0.7, 0.1, 0.9, 0.3, 0.6] # 模型概率值
# 计算 PR 曲线
precision, recall, thresholds = precision_recall_curve(y_test, y_score)
average_precision = average_precision_score(y_test, y_score)
# 绘制 PR 曲线图
plt.plot(recall, precision, label='PR curve (area = %0.2f)' % average_precision)
plt.xlim([0.0, 1.05])
plt.ylim([0.0, 1.05])
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.legend(loc="lower right")
plt.show()
二、ROC曲线
1.何为ROC曲线
ROC曲线是根据分类模型的预测结果,绘制出不同阈值下的真阳性率(True Positive Rate,也称为灵敏度)和假阳性率(False Positive Rate)之间的关系曲线。真阳性率表示被正确预测为正例的样本数占所有真实正例样本数的比例,假阳性率表示被错误预测为正例的样本数占所有真实负例样本数的比例。
2.ROC曲线计算
为了绘制ROC曲线,我们同样需要通过调整分类模型的阈值来得到一系列不同的真阳性率和假阳性率值。与PR曲线类似,首先将预测结果按照置信度排序,然后从高到低逐个计算真阳性率和假阳性率。最后,将真阳性率作为纵轴,假阳性率作为横轴进行绘制,即可得到ROC曲线。
3.功法运转
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练 Logistic 回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测测试集结果
y_pred = model.predict_proba(X_test)[:, 1]
# 计算 ROC 曲线
fpr, tpr, thresholds = roc_curve(y_test, y_pred)
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.05, 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()
总结
PR曲线和ROC曲线;两种功法是评估分类模型性能的常用工具,它们能够提供全面的分类结果评估以及帮助选择合适的分类阈值。在实际应用中,根据具体问题选择适合的曲线进行分析和解读,可以更好地评估和优化分类模型的性能。
欲知后事如何,请待下回分晓。