Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)

article/2025/9/12 1:09:45

机器学习的分类问题常用评论指标有:准确率、精确度、召回率和F1值,还有kappa指标 。

每次调包去找他们的计算代码很麻烦,所以这里一次性定义一个函数,直接计算所有的评价指标。

每次输入预测值和真实值就可以得到上面的指标值,很方便。

下面是这些指标的计算公式:

kappa指标:

  


Python计算代码

下面是定义函数:(主要也是借助sklearn库)

#导入数据分析常用包
import numpy as np 
import pandas as pd from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from sklearn.metrics import cohen_kappa_scoredef evaluation(y_test, y_predict):accuracy=classification_report(y_test, y_predict,output_dict=True)['accuracy']s=classification_report(y_test, y_predict,output_dict=True)['weighted avg']precision=s['precision']recall=s['recall']f1_score=s['f1-score']#kappa=cohen_kappa_score(y_test, y_predict)return accuracy,precision,recall,f1_score #, kappa

这个函数就两个参数,真实值和预测值,放入就可以计算上面的所有指标了,函数的返回值就是accuracy,precision,recall,f1_score #, kappa。

kappa我注释掉了,要用的话拿出来就行。


画图展示:

比如我们已经准备好了特征变量X和响应变量y

下面划分测试集和训练集:

#划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,stratify=y,test_size=0.2,random_state=0)

标准化一下: 

#数据标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train_s = scaler.transform(X_train)
X_test_s = scaler.transform(X_test)
print('训练数据形状:')
print(X_train_s.shape,y_train.shape)
print('验证集数据形状:')
print(X_test_s.shape,y_test.shape)

弄十个机器学习模型对比:

from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from xgboost.sklearn import XGBClassifier
from lightgbm import LGBMClassifier
from sklearn.svm import SVC
from sklearn.neural_network import MLPClassifier

 实例化分类器:

#逻辑回归
model1 =  LogisticRegression(C=1e10,max_iter=10000)#线性判别分析
model2 = LinearDiscriminantAnalysis()#K近邻
model3 = KNeighborsClassifier(n_neighbors=10)#决策树
model4 = DecisionTreeClassifier(random_state=77)#随机森林
model5= RandomForestClassifier(n_estimators=1000,  max_features='sqrt',random_state=10)#梯度提升
model6 = GradientBoostingClassifier(random_state=123)#极端梯度提升
model7 =  XGBClassifier(use_label_encoder=False,eval_metric=['logloss','auc','error'],objective='multi:softmax',random_state=0)
#轻量梯度提升
model8 = LGBMClassifier(objective='multiclass',num_class=3,random_state=1)#支持向量机
model9 = SVC(kernel="rbf", random_state=77)#神经网络
model10 = MLPClassifier(hidden_layer_sizes=(16,8), random_state=77, max_iter=10000)model_list=[model1,model2,model3,model4,model5,model6,model7,model8,model9,model10]
model_name=['逻辑回归','线性判别','K近邻','决策树','随机森林','梯度提升','极端梯度提升','轻量梯度提升','支持向量机','神经网络']

 计算评价指标:用df_eval数据框装起来计算的评价指标数值

df_eval=pd.DataFrame(columns=['Accuracy','Precision','Recall','F1_score'])
for i in range(10):model_C=model_list[i]name=model_name[i]model_C.fit(X_train_s, y_train)pred=model_C.predict(X_test_s)#s=classification_report(y_test, pred)s=evaluation(y_test,pred)df_eval.loc[name,:]=list(s)

 查看

df_eval

 

 

 画对应的柱状图:

import matplotlib.pyplot as plt 
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号bar_width = 0.4
colors=['c', 'b', 'g', 'tomato', 'm', 'y', 'lime', 'k','orange','pink','grey','tan']
fig, ax = plt.subplots(2,2,figsize=(10,8),dpi=128)
for i,col in enumerate(df_eval.columns):n=int(str('22')+str(i+1))plt.subplot(n)df_col=df_eval[col]m =np.arange(len(df_col))plt.bar(x=m,height=df_col.to_numpy(),width=bar_width,color=colors)#plt.xlabel('Methods',fontsize=12)names=df_col.indexplt.xticks(range(len(df_col)),names,fontsize=10)plt.xticks(rotation=40)plt.ylabel(col,fontsize=14)plt.tight_layout()
#plt.savefig('柱状图.jpg',dpi=512)
plt.show()

 四个评价指标,对应的十种模型进行对比。

这个自定义计算分类评价指标函数还是很方便的,还可以用于交叉验证里面,全面评价模型的预测好坏程度。


http://chatgpt.dhexx.cn/article/p8pMMq99.shtml

相关文章

batch_size对精确度和损失的影响

1 问题 在深度学习的学习过程中,模型性能对batchsize虽然没有学习率那么敏感,但是在进一步提升模型性能时,batch_size就会成为一个非常关键的参数。 batch_size对精度和损失的影响研究。 batch_size [,32,64,128,256] 不同batch_…

准度、精度傻傻分不清?

[导读] 做电子产品,常常遇到测量。此时就难免会关注到精度、准度等概念,遇到不少朋友对这两个概念不清楚,今天就来分享一下这两个概念。最近很忙,更的不及时,实在抱歉。也感谢大家不离不弃!对于更文分享这件…

机器学习笔记--classification_report精确度/召回率/F1值

classification_report简介 sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。 主要参数: y_true:1维数组,或标签指示器数组/稀疏矩阵&#xf…

YOLOv5~目标检测模型精确度

还是yolo5的基础啊~~ 一些关于目标检测模型的评估指标:IOU、TP&FP&FN&TN、mAP等,并列举了目标检测中的mAP计算。 指标评估(重要的一些定义) IOU 也称重叠度表示计算预测回归框和真实回归框的交并比,计算公式如下: TP&FP&FN&…

睿智的目标检测20——利用mAP计算目标检测精确度

睿智的目标检测20——利用mAP计算目标检测精确度 学习前言GITHUB代码下载知识储备1、IOU的概念2、TP TN FP FN的概念3、precision(精确度)和recall(召回率)4、概念举例5、单个指标的局限性 什么是AP绘制mAP 学习前言 好多人都想算…

误差与精度

机械专业用于教授学生误差与精度概念的课程叫做《公差与测量》或者叫做《机械精度设计》,而公差或者精度的本质含义就是误差的大小,公差越小,误差越小,精度越高。所以机械专业这门课其本质教授的还是误差理论。 在学校并没有好好学…

层次分析法 AHP

层次分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而…

权重计算方法一:层次分析法(AHP)

目录 1.层次分析法原理介绍 2.层次分析法建模步骤 3.案例分析 3.1 题目简述 3.2 确定评价指标,建立层次关系 3.3 构造判断矩阵 3.3.1 标度定义 3.3.2 构造判断矩阵 3.4 一致性检验 3.5 层次总排序 4.代码实现 1.层次分析法原理介绍 关于层次分析法的具体原…

【数学建模】层次分析法(AHP)

层次分析法 文章目录 层次分析法用途一、模型介绍一道典型例题1.建立层次结构2.对于同一层次的个元素关于上一层次中的某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。2.1 O-C矩阵(确定指标的权重)2.2 准则…

什么是AHP 层次分析法?

AHP层次分析法(The analytic hierarchy process)是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策…

[评价体系] 2、层次分析法AHP原理、例题

目录 1 基本介绍 2 建立步骤 2.1 建立递阶式层次结构模型 2.2 构造比较判断矩阵 2.3 层次单排序及一致性检验 2.4 层次总排序及其一致性检验 2.5 数据加权 3 案例:某学科创新能力评价指标体系 3.1 构建评价指标体系 3.2 构造判断矩阵及一致性检验 3.3 …

数学建模方法——层次分析法(AHP)

目录: 层次分析法简介层次分析法基本原理构造判断矩阵一致性检验一致性检验通过的判断矩阵求权重 4.1 算数平均法求权重 4.2 几何平均法求权重 4.3 特征值法求权重总结 0. 层次分析法简介 层次分析法(Analytic Hierarchy Process,简称AHP&…

层次分析法(AHP)算法简介

一、模型介绍 层次分析法(AHP)是美国运筹学家萨蒂于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分…

层次分析法(AHP)原理_例题应用及代码

层次分析法(AHP)原理应用及代码 1.AHP算法步骤2.算法举例第一步:建立递阶层次图第二步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致性指标 C I CI CI第二步:查找对应的平均随机一致性指标…

小话层次分析法(AHP)

在目标决策领域,有的决策数据信息是量化的,如一个项目的未来收益、消耗成本等,通过对各种信息进行计算可以做出较好的决策;但有的决策数据信息并不全是数字化的,如项目信息为“这个收益更好”、“这个成本更高”这样的…

清风数学建模学习笔记——层次分析法(AHP)

层次分析法 层次分析法(analytic hierarchy process),简称AHP。是建模比赛中比较基础的模型之一,其主要解决评价类的问题。如选择哪种方案最好,哪位员工表现最好等。 它是一个较为 主观 的评价方法,其在赋权…

层次分析法-yaahp软件使用

yaahp下载资源: 链接:https://pan.baidu.com/s/1Y08-wgn0YTzrDCaqToZLRg 提取码:avkc 目录 一.打开yaahp软件 1.新建AHP空白文件 2.进入画布页面。 3.点击检查模型按钮,检查模型是否正确 二、构造判断矩阵 1.先创建决策…

AHP层次分析法详解

APH简介 起源 层次分析法(AHP)是美国运筹学家Saaty于上世纪70年代初,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将…

AHP(层次分析法)的全面讲解及python实现

一、层次分析法的使用流程: 1. 建立层次结构模型 首先绘出层次结构图,正常三层是比较常见的:决策的目标、考虑的决策准则因素和决策对象。按它们之间的相互关系分为最高层、中间层和最低层(如下图是四层结构的) 2. 分…

层次分析法(AHP)基础概念整理+步骤总结

层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法 递阶层次的建立与特点 一般分为三层,最上面为目标层,最下面为方案层,中间是准则层或指标层。 最顶层是我们的目标,比如说选leader&…