Python使用pandas_ml输出混淆矩阵以及从混淆矩阵衍生出来的其他指标:TP、TN、FP、FN、TPR、TNR(SPC)、PPV、NPV、FPR、FDR、FNR、ACC、F1、MCC等

目录

Python使用pandas_ml输出混淆矩阵以及从混淆矩阵衍生出来的其他指标:TP、TN、FP、FN、TPR、TNR(SPC)、PPV、NPV、FPR、FDR、FNR、ACC、F1、MCC等

#pandas_ml包安装

#pandas_ml包的ConfusionMatrix函数计算混淆矩阵及其衍生指标;

#pandas_ml包的ConfusionMatrix函数计算混淆矩阵及其衍生指标(对于字符型数据)

#输出归一化的混淆矩阵

#ConfusionMatrix函数输出示例


#需要使用低版本的pandas和sklearn和pandas_ml去配合;

注意版本的问题,因为这个控件后来没有再持续更新。不过方法和思路各位可以借鉴。

#否则会发生版本不匹配的问题;

pip install pandas_ml==v0.6.1

#pip install pandas==0.22.0

#pip install pandas==scikit-learn 0.20.0

#pandas_ml包安装

pip install pandas_ml

#pandas_ml包的ConfusionMatrix函数计算混淆矩阵及其衍生指标;

import pandas as pd
from pandas_ml import ConfusionMatrixdata = {'y_Actual':    [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0],'y_Predicted': [1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0]}df = pd.DataFrame(data, columns=['y_Actual','y_Predicted'])
Confusion_Matrix = ConfusionMatrix(df['y_Actual'], df['y_Predicted'])
Confusion_Matrix.print_stats()import matplotlib.pyplot as pltconfusion_matrix.plot()plt.show()

#pandas_ml包的ConfusionMatrix函数计算混淆矩阵及其衍生指标(对于字符型数据)

#使用map函数将字符数据映射为数值数据;

例如:

map({'Yes': 1, 'No': 0})

import pandas as pd
from pandas_ml import ConfusionMatrixdata = {'y_Actual':    ['Yes', 'No',  'No', 'Yes', 'No', 'Yes', 'No',  'No', 'Yes', 'No', 'Yes', 'No'],'y_Predicted': ['Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'No', 'No',  'No']    }df = pd.DataFrame(data, columns=['y_Actual','y_Predicted'])
df['y_Actual'] = df['y_Actual'].map({'Yes': 1, 'No': 0})
df['y_Predicted'] = df['y_Predicted'].map({'Yes': 1, 'No': 0})Confusion_Matrix = ConfusionMatrix(df['y_Actual'], df['y_Predicted'])
Confusion_Matrix.print_stats()import matplotlib.pyplot as pltconfusion_matrix.plot()plt.show()

#输出归一化的混淆矩阵


import pandas as pd
from pandas_ml import ConfusionMatrix
import matplotlib.pyplot as plt
import string
%matplotlib inlineclasses = string.printable # 100 target classes
df = pd.DataFrame({'true':list(classes*10),'pred':sorted(classes*2)+list(classes*8)})
cm = ConfusionMatrix(df['true'],df['pred'])
cm.plot()plt.figure(figsize =(20,20))cm.plot(normalized = True,backend =“ seaborn”)

#ConfusionMatrix函数输出示例

Confusion Matrix:Classes  100  200  500  600  __all__
Actual
100        0    0    0    0        0
200        9    6    1    0       16
500        1    1    1    0        3
600        1    0    0    0        1
__all__   11    7    2    0       20Overall Statistics:Accuracy: 0.35
95% CI: (0.1539092047845412, 0.59218853453282805)
No Information Rate: ToDo
P-Value [Acc > NIR]: 0.978585644357
Kappa: 0.0780141843972
Mcnemar's Test P-Value: ToDoClass Statistics:Classes                                 100         200         500   600
Population                               20          20          20    20
Condition positive                        0          16           3     1
Condition negative                       20           4          17    19
Test outcome positive                    11           7           2     0
Test outcome negative                     9          13          18    20
TP: True Positive                         0           6           1     0
TN: True Negative                         9           3          16    19
FP: False Positive                       11           1           1     0
FN: False Negative                        0          10           2     1
TPR: Sensivity                          NaN       0.375   0.3333333     0
TNR=SPC: Specificity                   0.45        0.75   0.9411765     1
PPV: Pos Pred Value = Precision           0   0.8571429         0.5   NaN
NPV: Neg Pred Value                       1   0.2307692   0.8888889  0.95
FPR: False-out                         0.55        0.25  0.05882353     0
FDR: False Discovery Rate                 1   0.1428571         0.5   NaN
FNR: Miss Rate                          NaN       0.625   0.6666667     1
ACC: Accuracy                          0.45        0.45        0.85  0.95
F1 score                                  0   0.5217391         0.4     0
MCC: Matthews correlation coefficient   NaN   0.1048285    0.326732   NaN
Informedness                            NaN       0.125   0.2745098     0
Markedness                                0  0.08791209   0.3888889   NaN
Prevalence                                0         0.8        0.15  0.05
LR+: Positive likelihood ratio          NaN         1.5    5.666667   NaN
LR-: Negative likelihood ratio          NaN   0.8333333   0.7083333     1
DOR: Diagnostic odds ratio              NaN         1.8           8   NaN
FOR: False omission rate                  0   0.7692308   0.1111111  0.05

参考:Example of Confusion Matrix in Python

参考:Confusion Matrix

参考:混淆矩阵

Python使用pandas_ml输出混淆矩阵以及从混淆矩阵衍生出来的其他指标:TP、TN、FP、FN、TPR、TNR(SPC)、PPV、NPV、FPR、FDR、FNR、ACC、F1、MCC等相关推荐

  1. Python机器学习:评价分类结果003实现混淆矩阵,精准率和召回率

    #实现混淆矩阵,精准率和召回率 import numpy as np from sklearn import datasets digits = datasets.load_digits() X = ...

  2. python矩阵定义_python定义矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 假如有俩个矩阵score,score1 save('score.mat','sc ...

  3. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  4. python矩阵相乘例题_百道Python入门级练习题(新手友好)第一回合——矩阵乘法...

    题目描述 [问题描述] 编写程序,完成3*4矩阵和4*3整数矩阵的乘法,输出结果矩阵. [输入形式] 一行,供24个整数.以先行后列顺序输入第一个矩阵,而后输入第二个矩阵. [输出形式] 先行后列顺序 ...

  5. 总结python源文件编译、反编译、加密混淆

    本文更新地址 一.编译 1. 编译为 pyc 2. 编译为 pyo 或者 opt-n.pyc 文件 3. 编译成 pyd 或 so 链接库 编译方法一 编译方法二 编译方法三 使用建议 二.打包 1. ...

  6. Python矩阵计算类:计算矩阵加和、矩阵乘积、矩阵转置、矩阵行列式值、伴随矩阵和逆矩阵

    最近在Python程序设计中遇到一道设计矩阵计算类的题目,原题目要求计算矩阵加和和矩阵乘积,而我出于设计和挑战自己的目的,为自己增加难度,因此设计出矩阵计算类,不仅可以求出矩阵加和和矩阵乘积,还能计算 ...

  7. python如何输入一个矩阵_python怎么输入矩阵

    python怎么输入一个数组矩阵 下面是基于python3.4的 这样子: 1 2 3 4 import numpy as np arr = [1,2,3,4,5,6,7,8,9] matrix_a ...

  8. python给矩阵赋值_python给矩阵赋值

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python的numpy创造矩阵from numpy import matimp ...

  9. 【模型评估】混淆矩阵(confusion_matrix)之 TP、FP、TN、FN;敏感度、特异度、准确率、精确率

    你这蠢货,是不是又把酸葡萄和葡萄酸弄"混淆"啦!!!这里的混淆,我们细品,帮助我们理解名词"混淆矩阵" 上面日常情况中的混淆就是:是否把某两件东西或者多件东西给 ...

最新文章

  1. 交情来自一系列的交易
  2. 使用 Contour 接管 Kubernetes 的南北流量
  3. Linux awk 使用
  4. 多目标遗传优化算法nsga2求解复杂约束问题【python源码实现,二进制编码】
  5. linux 定时器 代码,linux C++ 定时器代码
  6. Cannot update while running on a read-only volume. The application is on a read-only volume. Please
  7. 《南溪的目标检测学习笔记》——深度学习的假设
  8. Wi-Fi Direct
  9. windows2003安装网络打印机的问题(原创,转载请注明)
  10. yolov3视频检测图像上显示准确率
  11. C语言调用多元函数,遗传算法C语言源代码(一元函数和二元函数)
  12. 系统蓝屏日志DMP文件分析工具WinDbg及教程
  13. antd4.x [antd: Switch] `value` is not a valid prop, do you mean `checked`? 解决办法
  14. B站JavaScript从入门到精通智能社Blue石川老师视频部分代码_幻灯片
  15. 小伙创业做奶茶,兢兢业业把奶茶店已经扩张到了10家分店
  16. Is necessary to close fille in python?
  17. 百度天气预报API接口的一个坑
  18. Java使用Jsoup爬虫获取网站内容(三)获取元素内容属性的方法
  19. SpringBoot:yaml配置及语法、yml数据读取、多环境开发控制
  20. 02-20210222华为海思Hi3518EV300鸿蒙系统的编译

热门文章

  1. Labelme标注的json数据转化为coco格式的数据
  2. 语言代码与国家地区对照表(表格)
  3. 饥荒专属服务器开完怎么运行,饥荒联机版专服简易启动教程
  4. MySQL在Linux上的四种安装方式
  5. excel禁用宏的格式_Excel条件格式颜色宏问题
  6. 无聊 发个金山词霸,和QQ2013 SP6去除广告方式
  7. OC Extension OveralHeader(常用屏幕尺寸数据 宏定义) 常量
  8. apache atlas
  9. 【Java】面向对象继承法举例2——老师学生类
  10. 深圳软件测试培训:事件与事件处理