Sci-kit learn how to print labels for confusion matrix?

前端 未结 5 1621
孤城傲影
孤城傲影 2021-02-13 16:52

So I\'m using sci-kit learn to classify some data. I have 13 different class values/categorizes to classify the data to. Now I have been able to use cross validation and print t

5条回答
  •  夕颜
    夕颜 (楼主)
    2021-02-13 17:12

    From the doc, it seems that there is no such option to print the rows and column labels of the confusion matrix. However, you can specify the label order using argument labels=...

    Example:

    from sklearn.metrics import confusion_matrix
    
    y_true = ['yes','yes','yes','no','no','no']
    y_pred = ['yes','no','no','no','no','no']
    print(confusion_matrix(y_true, y_pred))
    # Output:
    # [[3 0]
    #  [2 1]]
    print(confusion_matrix(y_true, y_pred, labels=['yes', 'no']))
    # Output:
    # [[1 2]
    #  [0 3]]
    

    If you want to print the confusion matrix with labels, you may try pandas and set the index and columns of the DataFrame.

    import pandas as pd
    cmtx = pd.DataFrame(
        confusion_matrix(y_true, y_pred, labels=['yes', 'no']), 
        index=['true:yes', 'true:no'], 
        columns=['pred:yes', 'pred:no']
    )
    print(cmtx)
    # Output:
    #           pred:yes  pred:no
    # true:yes         1        2
    # true:no          0        3
    

    Or

    unique_label = np.unique([y_true, y_pred])
    cmtx = pd.DataFrame(
        confusion_matrix(y_true, y_pred, labels=unique_label), 
        index=['true:{:}'.format(x) for x in unique_label], 
        columns=['pred:{:}'.format(x) for x in unique_label]
    )
    print(cmtx)
    # Output:
    #           pred:no  pred:yes
    # true:no         3         0
    # true:yes        2         1
    

提交回复
热议问题