如何用最少的代码绘制Python中不同类型的混淆矩阵?

时间:2019-03-19 18:22:06

标签: python matplotlib scikit-learn seaborn confusion-matrix

我有2个numpy数组,y_actual(实际值)和y_pred(ML模型预测),都具有0或1的二进制值。

当前,我正在根据以下语法形成confusion matrix:-

df_confusion = pd.crosstab(y_actual, y_pred, rownames=['Actual'], colnames=['Predicted'], margins=True)
print('Confusion Matrix:')
print(df_confusion)

但是,我检查了SO和其他文档,却找不到包含最少代码的全面示例,这可以帮助我完成以下任务:-

  1. 形成一个混淆矩阵图形(使用matplotlibSeaborn,其中显示每个类的实际样本数,旁边还有0的名称标签为Class A,和1为Class B
  2. 绘制相似的混淆矩阵图,其中在混淆矩阵中显示每个类别中样本的百分比(例如真实阳性率,假阳性率等)。
  3. 绘制另一个混淆矩阵,该矩阵显示混淆矩阵,并在右侧标度上显示样本数量(像这样)https://scikit-learn.org/stable/_images/sphx_glr_plot_confusion_matrix_001.png。为归一化的情况形成类似的混淆矩阵,例如https://scikit-learn.org/stable/_images/sphx_glr_plot_confusion_matrix_001.png

此外,如问题中所述,目标是将第0类标记为Class A,将第1类标记为Class B,因为目前这些标记仅显示为0和{{ 1}},看起来不太连贯。我希望使用最少的代码来完成相同的任务,并生成连贯且美观的混淆矩阵图。在这方面的任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

我将带您到Kaggle,它有很多资源。您应该能够轻松调整以下示例以适合您的需求。

<script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>

    <div id = "script" arr= "<%=arr%>" ></div>
    <script>

        function renderBlock(){
             var arr = document.getElementById("script").getAttribute('arr');
             console.log(arr.length);
             $("#blockView").empty();
             for (var i=0; i <  arr.length;i++){
                for (var j=0; j <  arr[0].length;i++){
                    $('#blockView').append('<button>'+arr[i][j]+'</button');
                }
             }
         }
         renderBlock();

     </script>

enter image description here