博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于sklearn的常用分类任务指标Python实现
阅读量:6710 次
发布时间:2019-06-25

本文共 1935 字,大约阅读时间需要 6 分钟。

基于sklearn的常用分类任务指标Python实现

一、摘要

分类任务常用指标包含混淆矩阵、每类分类精度、平均分类精度、总体分类精度、f1-score等。 Python的sklearn.metrics 模块覆盖了分类任务中大部分常用的验证指标, 本文选择其中几种评价指标展示代码片段,供读者使用。 基于tensorflow-1.0与mnist数据集做demo展示并列举实验结果。 文末附有sklearn.metrics模块的相关资料链接,方便高端玩家深入探索。

二、本文包含的评价指标

混淆矩阵(Confusion Matrix,CM) 

每类别分类精度 
每类别召回率 
平均分类精度(Average Accuracy,AA) 
总体分类精度(Overall Accuracy,OA)

三、功能代码片段展示

代码在tensorflow-1.0、Python3.5环境下通过测试,tf1.0版本API改动较大,1.0以下版本tensorflow可能不能通过测试,精力有限,其他环境尚未做测试。

1 from sklearn import metrics 2 import numpy as np 3 ##### 4 # Do classification task,  5 # then get the ground truth and the predict label named y_true and y_pred 6 classify_report = metrics.classification_report(y_true, y_pred) 7 confusion_matrix = metrics.confusion_matrix(y_true, y_pred) 8 overall_accuracy = metrics.accuracy_score(y_true, y_pred) 9 acc_for_each_class = metrics.precision_score(y_true, y_pred, average=None)10 average_accuracy = np.mean(acc_for_each_class)11 score = metrics.accuracy_score(y_true, y_pred)12 print('classify_report : \n', classify_report)13 print('confusion_matrix : \n', confusion_matrix)14 print('acc_for_each_class : \n', acc_for_each_class)15 print('average_accuracy: {0:f}'.format(average_accuracy))16 print('overall_accuracy: {0:f}'.format(overall_accuracy))17 print('score: {0:f}'.format(score))

 

四、实验结果展示

本文基于tensorflow-1.0框架与mnist数据集,使用线性分类器与卷积神经网络分类并使用上文提到的代码片段展示分类性能。

分类性能结果直观,排列清晰,便于二次使用。

1. 线性分类器分类报告:

 

2. 线性分类器混淆矩阵与其他分类指标展示:

 

3. 卷积神经网络每层参数显示:

 

4. 卷积神经网络分类报告:

 

5. 卷积神经网络混淆矩阵与其他分类指标展示:

 

 

五、代码示例

使用类似如下的代码片段可以直观查看tensor相关内容

 1 print(some_tensor.op.name, ' ', some_tensor.get_shape().as_list()) 

代码太长,这里就不粘贴了。代码来源:https://github.com/JiJingYu/tensorflow-exercise/blob/master/mnist_test.py

 六、总结

不得不说sklearn是个全面的Python模块,常用的机器学习方法以及评价准则都能从中找到函数与例程。同时,tensorflow作为google亲儿子,发展劲头势不可挡。

sklearn 官网:http://scikit-learn.org/stable/index.html

一份高质量 sklearn tutorial:https://github.com/jakevdp/sklearn_tutorial

 

转载于:https://www.cnblogs.com/nwpuxuezha/p/6539054.html

你可能感兴趣的文章
MySQL快捷键
查看>>
PHP使用 DOMDocument创建和解析xml文件
查看>>
全面掌握const、volatile和mutable关键字(转)
查看>>
url加时间戳避免再次请求当前路径出现的缓存问题
查看>>
读取EXCEL的简单方式
查看>>
centos svn更新错误和SVN版本升级
查看>>
python入门
查看>>
HMTL5的 video 在IOS7中碰到的坑
查看>>
递推DP UVA 590 Always on the run
查看>>
设备读写方式
查看>>
实验箱FPGA部分测试报告及A8与FPGA链接测试报告
查看>>
CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第一件事就是移植串口驱动,重定向 printf...
查看>>
使用docker 安装 GITLIB
查看>>
既完美又可爱的拖拽(原生js)
查看>>
linux mysql 找不到 <mysql/mysql.h>
查看>>
JS-过滤敏感词【RegExp】
查看>>
HTC G11短信为什么对单独一个人发不出去??!!!!跪求解啊!!!!
查看>>
ObservableCollection 与list
查看>>
在工作空间中构建和使用catkin包
查看>>
Oracle RAC 归档 与 非归档 切换
查看>>