多分类算法的评估指标

在以往的分类问题求解当中,我们遇到的问题多为二分类问题,我们常用的评估指标有accuracy, precision, recall_score, f1-score, roc_auc_score等。但是在实际生活中,多分类问题也是大量存在的。这一小节,我们就详细的说明一下多分类问题的评估指标。
iris.png

我们先来看一下sklearn库中的二分类的评估指标,以recall_score为例。在recall_score方法中,有一个很重要的参数’average’,它的默认值为’binary’。当在默认参数的情况,该评估方法只能求解二分类问题,如果将该评估方法用于多分类问题,则系统会报错。但’average’同时也向我们提供了其他四个用于解决多分类的问题的参数’micro’,‘macro’,‘weighted’,‘samples’。下面我们以鸢尾花数据集为例来对这四个参数进行逐一说明。
[sklearn.metrics.recall_score]('https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html
')

sklearn.metrics.recall_score(y_true, y_pred, labels=None, 
pos_label=1, average='binary', sample_weight=None, zero_division='warn')

我们以recall_score的计算为例,recall_score的计算公式如下:
R e c a l l = T P T P + F N Recall = \frac {TP}{TP + FN} Recall=TP+FNTP
为了计算recall_score,我们必须先计算出TP,FN值。我们采用sklearn中的混淆矩阵来计算TP,FN值。

#导入数据分析的常用工具包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#导入iris数据集
from sklearn import datasets
iris = datasets.load_iris()

#对iris数据集进行切分
from sklearn.model_selection import train_test_split
X = iris.data
Y = iris.target
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.3,random_state = 0)

#建立一个基础的逻辑回归模型
from sklearn.linear_model import LogisticRegression
LR = LogisticRegression()
LR.fit(X_train,Y_train)
prediction = LR.predict(X_test)

#计算混淆矩阵
from sklearn.metrics import confusion_matrix
cnf = confusion_matrix(Y_test,prediction,labels = [0,1,2])
print(cnf)
[out]:
array([[16,  0,  0],
       [ 0, 13,  5],
       [ 0,  0, 11]], dtype=int64)

该分类问题的混淆矩阵如下,列为真实类别,行为预测类别:

class012
01600
10135
20011

混淆矩阵(confusion matrix)说明:
TP(True positive):把正例正确地预测为了正例,如把类别0预测为0的个数有16个。
FN(False negative):把正例错误地预测为了负列,如把类别1预测为2的个数有5个。
FP(False positive):把负例错误地预测为了正例,假设0为正例,错误地把1,2预测为0就是FP。
TN(True negative):把负例正确地预测为了负例,假设0为正例,1,2为负例,正确地把1,2预测为1,2就是TN。
对于混淆矩阵,可以这样理解。第一个字母T/F,表示预测的正确与否;第二个字母P/N,表示预测的结果为正例或者负例。如TP就表示预测对了,预测的结果是正例,那它的意思就是把正例预测为了正例。

1.Micro

Micro:把所有类汇总在一起计算出最终recall值,其计算公式如下:
R e c a l l = T P 0 + T P 1 + T P 2 T P 0 + F N 0 + T P 1 + F N 1 + T P 2 + F N 2 Recall = \frac{TP_0 + TP_1 + TP_2}{TP_0 + FN_0 + TP_1 + FN_1 + TP_2 + FN_2} Recall=TP0+FN0+TP1+FN1+TP2+FN2TP0+TP1+TP2
在使用Micro参数时,其recall_score = (16+13+11)/(16+13+11+5) = 0.89。
使用sklearn.metrics方法计算:

from sklearn.metrics import recall_score
recall_score(Y_test,prediction,average = 'micro')
[out]:0.8888888888888888

从上述计算结果可以看出,两者的计算结果是一致的,均为0.89。

2.Macro

Macro:分别计算出每一类的recall值,再取算数平均值,其计算公式如下:
R e c a l l = ( T P 0 T P 0 + F N 0 + T P 1 T P 1 + F N 1 + T P 2 T P 2 + F N 2 ) ∗ 1 3 Recall =( \frac{TP_0}{TP_0 + FN_0} + \frac{TP_1}{TP_1 + FN_1} + \frac{TP_2}{TP_2 + FN_2}) * \frac{1}{3} Recall=(TP0+FN0TP0+TP1+FN1TP1+TP2+FN2TP2)31
在使用Macro参数时,其recall_score = [16/(16+0+0) + 13/(0+13+5) + 11/(11+0+0)] * 1/3 = 0.91
使用sklearn.metrics方法计算:

from sklearn.metrics import recall_score
recall_score(Y_test,prediction,average = 'macro')
[out]:0.9074074074074074

从上述计算结果可以看出,macro参数下的recall值为0.91。

3.Weighted

Weighted:分别计算每一类的recall值,再乘以各自的权重,然后求和,其计算公式如下:
R e c a l l = T P 0 T P 0 + F N 0 ∗ W 0 + T P 1 T P 1 + F N 1 ∗ W 1 + T P 2 T P 2 + F N 2 ∗ W 2 Recall =\frac{TP_0}{TP_0 + FN_0} * W_0+ \frac{TP_1}{TP_1 + FN_1} * W_1 + \frac{TP_2}{TP_2 + FN_2} * W_2 Recall=TP0+FN0TP0W0+TP1+FN1TP1W1+TP2+FN2TP2W2
计算各类的权重:

W0,W1,W2 = np.bincount(Y_test) / len(Y_test)
print(W0,W1,W2)
[out]:0.35555555555555557 0.4 0.24444444444444444

在使用weighted参数时,其recall_score = 16/(16+0+0) * 0.356 + 13/(0+13+5) * 0.4 + 11/(11+0+0) * 0.244 = 0.89
使用sklearn.metrics方法计算:

from sklearn.metrics import recall_score
recall_score(Y_test,prediction,average = 'weighted')
[out]:0.8888888888888888

从上述计算结果可以看出,weighted参数下的recall值为0.89。

4.Samples

samples应用于多标签的分类问题,每一个样本拥有一个以上的标签。如一个感染病毒性肺炎的患者,就可以说他既属于病毒性肺炎患者这一类,也可以说他属于肺炎患者类。

小结:
1.对于多分类算法的评估,我们需要将sklearn.metrics.recall_score中的’average’参数修改为’micro’或’macro’或者’weighted’。
2.在这个例子当中,我们以recall来举例,像其他的评估指标precision, roc_auc_score, f1-score都是采用同样的方法。

文章参考:
[1].https://zhuanlan.zhihu.com/p/59862986

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
标准机柜尺寸 服务器分类 机柜其实就一个柜子而已,要放哪些东西,是要根需求来购买的。 机柜里面一般放的有交换机(与交换机相关的配件有配线架、排线架)、服务器(塔式、 机架式)、还有的需要放置UPS(也分普通立式和机架式)、所以规划好你的机架用来装哪 些设备,有多少? 然后再选择机柜,机柜的宽都是标准的,深是由普通和加深两重,如果要放机架式服 务器最好选择加深机柜,高度就根据放多少来决定,机柜一般讲多少U,1U的相当于一个 交换机的高度,从6U到42U机柜都有,按需求购买,机柜的品牌也很要重要,不同品牌用 料和做工都有差别,推荐使用像金盾这些较大品牌的。 关于服务器:.按服务器的机箱结构来划分,可以把服务器划分为"台式服务器"、"机架 式服务器"、"机柜式服务器"和"刀片式服务器"四类。(1)台式服务器(2)机架式服务器( 3)机柜式服务器(4)刀片式服务器 塔式服务器/台式服务器也称为"塔式服务器"。有的台式服务器采用大小与普通立式计 算机大致相当的机箱,有的采用大容量的机箱,像个硕大的柜子。低档服务器由于功能 较弱,整个服务器的内部结构比较简单,所以机箱不大,都采用台式机箱结构。这里所 介绍的台式不是平时普通计算机中的台式,立式机箱也属于台式机范围,目前这类服务 器在整个服务器市场中占有相当大的份额。像台式机一样,占用空间比较大,适合一些 小型企业使用。其他的尺寸宽度,深度可能差不多,就是要高好几个U。 机架式服务器是针对企业的密集部署需求,以19英寸机架作为标准宽度的服务器类型 。将服务器放置到机架上,服务器间是相互独立的,不仅有利于日常的维护与管理,也可 能避免意想不到的故障。机架式是国际的一个标准,基本宽度为482mm。一般在1个U的高 度1U(1U=1.75英寸)、2U、4U等规格,宽度一般都是标准的19英寸,深度有700mm多的也 有800mm多的.通常1U的机架式服务器最节省空间,但性能和可扩展性较差,适合一些业 务相对固定的使用领 域。4U以上的产品性能较高,可扩展性好,一般支持4个以上的高性能处理器和大量的 标准热插拔部件。管理也十分方便,厂商通常提供人相应的管理和监控工具,适合大访 问量的关键应用,但体积较大,空间利用率不高。 刀片服务器是近几年比较流行的一种高可用、高密度服务器架构,是专门为特殊应用 行业和高密度计算环境设计的,其中每一块刀片实际上就是一块系统母板,类似于一个 独立的服务器。在这种模式下,每一个母板运行自己的系统,服务于指定的不同用户群 ,相互之间没有关联。不过可以使用系统软件将这些母板集合成一个服务器集群。 关于塔式服务器 原则上塔式服务器是不需要和机柜搭配使用的,但是如果出于某种原因也可以将它放 到机柜中保管。但是存在一些问题,如:塔式服务器因为不能改变放置的方向,往往会造 成占用机柜空间大、不能固定等问题。还是权衡具体环境的利弊来做决定吧。可以用转 换套件,转成卧式的,这样方在机柜里面协调一些. 是否连接显示器,要看机柜空间的安排、服务器的数量、服务器直接操作的频繁程度 、监控的要求、机柜管理的要求等因素综合考虑来决定。一般作为服务器不建议经常进 行直接操作,所以长期直接连接显示器也是不安全因素的一种哦。买机架式的,不用接 显示器,通过远程来连接,这样既省显示器,又省空间,还美观。 塔式服务器一般是大家见得最多的,它的外形及结构都与普通的pc机差不多,只是个 头稍大一些,其外形尺寸并无统一标准。 塔式服务器的主板扩展性较强,插槽也很多,而且塔式服务器的机箱内部往往会预留 很多空间,以便进行硬盘,电源等的冗余扩展。这种服务器无需额外设备,对放置空间 没多少要求,并且具有良好的可扩展性,配置也能够很高,因而应用范围非常广泛,可 以满足一般常见的服务器应用需求。 这种类型服务器尤其适合常见的入门级和工作组级服务器应用,而且成本比较低,性 能能满足大部分中小企业用户的要求,目前的市场需求空间还是很大的。 但这种类型服务器也有不少局限性,在需要采用多台服务器同时工作以满足较高的服 务器应用需求时,由于其个体比较大,占用空间多,也不方便管理,便显得很不适合。 机架式服务器 机架式服务器机架式服务器的外形看来不像计算机,而像交换机,有1U(1U=1.75英寸 =4.45CM)、2U、4U等规格。机架式服务器安装在标准的19英寸机柜里面。这种结构的多 为功能型服务器。 对于信息服务企业(如ISP/ICP/ISV/IDC)而言,选择服务器时首先要考虑服务器的体积 、功耗、发热量等物理参数,因为信息服务企业通常使用大型专用机房统一部署和管理 大量的服务器资源,机房通常设有严密的保安措施、良好的冷却系统、多重备份的供电 系统,其机房的造价相当昂贵。如何在有限的空间内部署更多的服务器直接关系到企业 的服务成

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值