Python使用pandas_ml输出混淆矩阵以及从混淆矩阵衍生出来的其他指标:TPTNFPFNTPRTNR(SPC)PPVNPVFPRFDRFNRACCF1MCC等

Posted Data+Science+Insight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python使用pandas_ml输出混淆矩阵以及从混淆矩阵衍生出来的其他指标:TPTNFPFNTPRTNR(SPC)PPVNPVFPRFDRFNRACCF1MCC等相关的知识,希望对你有一定的参考价值。

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 ConfusionMatrix

data = {'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 plt

confusion_matrix.plot()

plt.show()

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

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

例如:

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

import pandas as pd
from pandas_ml import ConfusionMatrix

data = {'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 plt

confusion_matrix.plot()

plt.show()

#输出归一化的混淆矩阵


import pandas as pd
from pandas_ml import ConfusionMatrix
import matplotlib.pyplot as plt
import string
%matplotlib inline

classes = 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       20


Overall 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: ToDo


Class 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输出混淆矩阵以及从混淆矩阵衍生出来的其他指标:TPTNFPFNTPRTNR(SPC)PPVNPVFPRFDRFNRACCF1MCC等的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python 中的混淆矩阵中获取精度、召回率和 f 度量 [重复]

Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签配置不同情况下颜色条的数值范围以及数据类型(整型浮点型)

Python使用pandas的crosstab函数计算混淆矩阵并使用Seaborn可视化混淆矩阵实战

R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵并使用summary函数基于混淆矩阵输出分类模型评估的其它详细指标(kappanpv等13个)

使用python从混淆矩阵进行层次聚类

python使用sklearn的ConfusionMatrixDisplay来可视化混淆矩阵