机器学习|多分类的精确率和召回率

简介: 多分类的精确率和召回率。

 我们常用的精确率和召回率通常都用于二分类的问题上,那么在多分类上应该怎样去使用这些评价指标呢?

多分类的精确率和召回率

既然精确率和召回率的概念以及计算公式都指向二分类问题,那么我们不妨将多分类问题转换为二分类问题来做。

先来看一下精确率和召回率的概念:

    • 精确率是指分类正确的正样本个数占分类器判定为正样本的个数的比例。
    • 召回率是指分类正确的正样本真实正样本的比例。

    根据概念我们知道,在转换为二分类的过程中,我们重点在意的就是怎样去做正样本,其实我们可以把每个类别单独视为“正”,所有的其他类型视为“负”。

    举个例子:

    在进行例子之前,我们先来了解一个概念叫做——混淆矩阵。

    image.png

    对于上面这个表格,我们就可以把它叫做是一个混淆矩阵,在混淆矩阵中,每一行之和表示该类别的真实样本数量,每一列之和表示被预测为该类别的样本数量。

    那么对于这个混淆矩阵我们就可以计算它每一个类别的精确率和召回率:

      • 分类1的精确率(此时把分类1当作正样本,其余为负样本):

      分类正确的正样本=43

      分类器判定为正样本=50

      P=43/50

        • 分类1的召回率:

        分类正确的正样本=43

        真实正样本=45

        R=43/45

          • 分类2的精确率(此时把分类2当作正样本,其余为负样本):

          分类正确的正样本=45

          分类器判定为正样本=50

          P=45/50

            • 分类2的召回率:

            分类正确的正样本=45

            真实正样本=51

            R=45/51

              • 分类3的精确率(此时把分类3当作正样本,其余为负样本):

              分类正确的正样本=49

              分类器判定为正样本=50

              P=4950

                • 分类3的召回率:

                分类正确的正样本=49

                真实正样本=54

                R=49/54

                得到了每个分类对应的P和R值他们的F1 score就可以用下面的式子算得:

                image.png

                用代码实现一下该计算方式:

                M= [
                    [14371, 6500, 9, 0, 0, 2, 316],
                    [5700, 22205, 454, 20, 0, 11, 23],
                    [0, 445, 3115, 71, 0, 11, 0],
                    [0, 0, 160, 112, 0, 0, 0],
                    [0, 888, 39, 2, 0, 0, 0],
                    [0, 486, 1196, 30, 0, 74, 0],
                    [1139, 35, 0, 0, 0, 0, 865]
                ]
                n=len(M)
                foriinrange(n):
                rowsum, colsum=sum(M[i]), sum(M[r][i] forrinrange(n))
                try:
                print ('precision: %s'% (M[i][i]/float(colsum)), 'recall: %s'% (M[i][i]/float(rowsum)))
                exceptZeroDivisionError:
                print ('precision: %s'%0, 'recall: %s'%0)

                image.gif


                相关文章
                |
                2天前
                |
                机器学习/深度学习 自然语言处理 算法
                |
                2天前
                |
                机器学习/深度学习
                机器学习 —— 分类预测与集成学习(下)
                机器学习 —— 分类预测与集成学习(下)
                17 0
                |
                2天前
                |
                机器学习/深度学习 数据采集 数据可视化
                机器学习 —— 分类预测与集成学习(上)
                机器学习 —— 分类预测与集成学习
                24 2
                |
                2天前
                |
                机器学习/深度学习 存储 算法
                【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
                【5月更文挑战第11天】【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
                |
                2天前
                |
                机器学习/深度学习 算法 Python
                【Python机器学习专栏】逻辑回归在分类问题中的应用
                【4月更文挑战第30天】逻辑回归是用于二分类的统计方法,通过Sigmoid函数将线性输出映射到[0,1],以预测概率。优点包括易于理解、不需要线性关系、鲁棒且能输出概率。缺点是假设观测独立、易过拟合及需大样本量。在Python中,可使用`sklearn`的`LogisticRegression`实现模型。尽管有局限,但在适用场景下,逻辑回归是强大且有价值的分类工具。
                |
                2天前
                |
                机器学习/深度学习 存储 算法
                PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
                PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
                |
                2天前
                |
                机器学习/深度学习 PyTorch 算法框架/工具
                Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
                Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
                |
                2天前
                |
                机器学习/深度学习 传感器 算法
                机器学习基础入门(一)(机器学习定义及分类)
                机器学习基础入门(一)(机器学习定义及分类)
                |
                2天前
                |
                机器学习/深度学习 数据采集 算法
                机器学习实战第1天:鸢尾花分类任务
                机器学习实战第1天:鸢尾花分类任务
                49 0
                |
                2天前
                |
                机器学习/深度学习 算法
                机器学习第9天:决策树分类
                机器学习第9天:决策树分类
                34 0

                热门文章

                最新文章