对模型评估与旋转中名词定义和手写体Mnist数据集中10个字符 (0-9)的分类识别

本文详细介绍了信息检索领域的查准率和查全率,阐述了两者的关系以及如何通过F1-Score衡量模型性能。接着,讨论了ROC曲线及其在二分类模型中的应用,并分析了混淆矩阵在评估分类器中的作用。最后,通过手写体Mnist数据集,探讨了如何训练和评估一个二分类器。
摘要由CSDN通过智能技术生成

名词定义

1.查准率
查准率(精度)是衡量某一检索系统的信号噪声比的一种指标,即检出的相关文献量与检出的文献总量的百分比。普遍表示为:查准率=(检索出的相关信息量/检索出的信息总量)x100%。使用专指性较强的检索语言(如上位类、上位主题词)能提高查准率,但查全率下降。
2.查全率
查全率(召回率),是衡量某一检索系统从文献集合中检出相关文献成功度的一项指标,即检出的相关文献量与检索系统中相关文献总量的百分比。普遍表示为:查全率=(检索出的相关信息量/系统中的相关信息总量)x100%。使用泛指性较强的检索语言(如上位类、上位主题词)能提高查全率,但查准率下降。
3.两者关系
1)查全率与查准率是信息检索领域内的概念,二者是反映检索效果的重要指标。根据查准率和查全率可绘制系统的PR曲线,可根据曲线判断系统的优劣。
2)查全率和查准率之间具有互逆的关系,一个IR 系统可以在它们之间进行折中。在极端情况下,一个将文档集合中所有文档返回为结果集合的系统有100 %的查全率,但是查准率却很低。另一方面,如果一个系统只能返回唯一的文档,会有很低的查全率,但却可能有100 %的查准率。通常,以查全率和查准率为指标来测定IR系统的有效性时,总是假定查全率为一个适当的值,然后按查准率的高低来衡量系统的有效性。
3)改变检索项、减少限制条件,都可以提高查全率。
4.F1-Score
F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种调和平均,它的最大值是1,最小值是0。
分数( Score),又称平衡F分数(balanced F Score),它被定义为精确率和召回率的调和平均数。
在这里插入图片描述

更一般的,我们定义 分数为
在这里插入图片描述

除了 分数之外, 分数和 分数在统计学中也得到大量的应用。其中, 分数中,召回率的权重高于精确率,而 分数中,精确率的权重高于召回率。
5.ROC
ROC曲线
曲线的坐标分别为真正例率(TPR)和假正例率(FPR),定义如下:

真正例的个数是实际值为正例被预测成为正例的值得个数,TPR是预测结果中真正例占实际值中正例的比例;
反正例的个数是实际值为反例被预测成为正例的值得个数,FPR是预测结果中反正例占实际值中的反例的比例;

很多学习器是为测试样本是产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值分为正类,否则为反类,因此分类过程可以看作选取一个截断点。(通常截取点为0.5,大于0.5为正例,小于0.5为负例)

选择不同的截断点对结果的影响很大,截断点的取值区间是【0,1】,如果截断点靠近1,则被判断为正例的数量会变少;如果截断点靠近0,则被判断为正例的数量会变多。x轴的取值范围为【0,1】,x点代表FPR的概率;y轴的取值范围为【0,1】,y点代表TPR的概率

不同任务中,可以选择不同截断点,若更注重”查准率”,应选择排序中靠前位置进行截断,反之若注重”查全率”,则选择靠后位置截断。因此排序本身质量的好坏,可以直接导致学习器不同泛化性能好坏,ROC曲线则是从这个角度出发来研究学习器的工具。
6.混淆矩阵
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度,在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类相比较计算的。

手写体Mnist数据集中10个字符 (0-9)的分类识别

MNIST

数据介绍:本章使用MNIST数据集,这是一组由美国高中生和人口调查局员工手写的70000个数字的图片。每张图像都用其代表的数字标记。这个数据集被广为使用,因此也被称作是机器学习领域的“Hello World”:但凡有人想到了一个新的分类算法,都会想看看在MNIST上的执行结果。因此只要是学习机器学习的人,早晚都要面对MNIST。

# 使用sklearn的函数来获取MNIST数据集
from sklearn.datasets import fetch_openml
import numpy as np
import os
# to make this notebook's output stable across runs
np.random.seed(42)
# To plot pretty figures
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rc('axes', labelsize=14)
mpl.rc('xtick', labelsize=12)
mpl.rc('ytick', labelsize=12)
# 为了显示中文
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 耗时巨大
def sort_by_target(mnist):
    reorder_train=np.array(sorted([(target,i) for i, target in enumerate(mnist.target[:60000])]))[:,1]
    reorder_test=np.array(sorted([(target,i) for i, target in enumerate(mnist.target[60000:])]))[:,1]
    mnist.data[:60000]=mnist.data[reorder_train]
    mnist.target[:60000]=mnist.target[reorder_train]
    mnist.data[60000:]=mnist.data[reorder_test+60000]
    mnist.target[60000:]=mnist.target[reorder_test+60000]
mnist=fetch_openml('mnist_784',version=1,cache=True)
mnist.target=mnist.target.astype(np.int8)
sort_by_target(mnist)
mnist["data"], mnist["target"]
(array([[0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        ...,
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.]]),
 array([0, 0, 0, ..., 9, 9, 9], dtype=int8))
mnist.data.shape
(70000, 784)
X,y=mnist["data"],mnist["target"]
X.shape
(70000, 784)
y.shape
(70000,)
28*28
784
# 展示图片
def plot_digit(data):
    image = data.reshape(28, 28)
    plt.imshow(image, cmap = mpl.cm.binary,
               interpolation="nearest")
    plt.axis("off")
some_digit = X[36000]
plot_digit(X[36000].reshape(28,28))

在这里插入图片描述

y[36000]
5
# 更好看的图片展示
def plot_digits(instances,images_per_row=10,**options):
    size=28
    # 每一行有一个
    image_pre_row=min(len(instances),images_per_row)
    images=[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值