统计学习:模型评估与选择--绘制性能度量P-R曲线(python代码)

本文介绍了统计学习中模型评估的重要工具——P-R曲线,阐述了如何利用P-R曲线评估学习器性能,并通过Python代码展示了如何绘制P-R曲线。在多分类问题中,使用one-hot编码,训练不同模型如逻辑回归、SVM和线性判别,通过比较它们的BEP(平衡点)来判断模型性能,结果显示逻辑回归最佳。
摘要由CSDN通过智能技术生成

将查准率与查全率作为坐标系构建坐标空间,就可以得到所谓的ROC空间。
P-R曲线的定义为:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的样本排在后面,按此顺序逐个把样本作为正例进行预测,每次计算出当前的P值和R值。
P-R曲线的评估方法:若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下面积大,谁的性能更优。但一般来说曲线下的面积是很难估算的,因此使用BEP(平衡点,Break-Event Point),即当P =R时,平衡点越高,性能越优。
知识点:
对于多分类的问题,使用one-hot编码方式更加好
训练模型可以有多个尝试,然后选择其中性能最好的一个

代码如下:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, label_binarize
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import  precision_recall_curve, average_precision_score
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.svm import SVC


def data_preprocessing():
    # 导入手写数据集
    mnist = datasets.load_digits()
    # 拆分数据与标签
    X, y = mnist.data, mnist.target
    # print(X.shape)
    random_state = np.random.RandomState(0)
    n_samples, n_features = X.shape
    X = np.c_[X, random_state.randn(n_samples, 10*n_features)]
    # print(X.shape)
    # 数据标准化
    X = StandardScaler().
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值