1. 程式人生 > >Python作圖-精確率與召回率間關係

Python作圖-精確率與召回率間關係

Precision與Recall的關係圖,下面貼出原始碼:

下圖的Precision與Recall是自已實驗的資料,作圖時將它替換成自己的資料即可.

import matplotlib.pyplot as plt
import numpy as np


# draw the picture
def draw(Curve_one, Curve_two, Curve_three, Curve_four):

    plt.figure()
    
    plot1, = plt.plot(Curve_one[0], Curve_one[1],     'co-', linewidth=2.0, markersize=10.0)
    plot2, = plt.plot(Curve_two[0], Curve_two[1],     'bx-', linewidth=2.0, markersize=10.0)
    plot3, = plt.plot(Curve_three[0], Curve_three[1], 'rh-', linewidth=2.0, markersize=10.0)
    plot4, = plt.plot(Curve_four[0], Curve_four[1],   'k^-', linewidth=2.0, markersize=10.0)
    
    # set X axis
    plt.xlim( [0.5, 1.05] )
    plt.xticks( np.linspace(0.5, 1.0, 6) )
    plt.xlabel("Precision", fontsize="x-large")
    
    # set Y axis
    plt.ylim( [0.1, 1.05] )
    plt.yticks( np.linspace(0.1, 1.0, 10) )
    plt.ylabel("Recall",    fontsize="x-large")
    
    # set figure information
    plt.title("Precision --- Recall", fontsize="x-large")
    plt.legend([plot1, plot2, plot3, plot4], ("Curve_one", "Curve_two", "Curve_three", "Curve_four"), loc="lower left", numpoints=1)
    plt.grid(True)

    # draw the chart
    plt.show()


# main function
def main():
    # Curve one
    Curve_one = [ (0.999200, 0.998067, 0.995260, 0.989679, 0.976811, 0.937295, 0.849400, 0.751620, 0.667903, 0.599113, 0.542607), 
                  (0.107668, 0.262707, 0.436613, 0.607831, 0.771336, 0.904606, 0.968826, 0.989191, 0.996214, 0.998741, 0.999759) ]

    # Curve two
    Curve_two  = [ (0.998300, 0.994883, 0.990090, 0.981757, 0.963972, 0.918909, 0.835273, 0.744247, 0.664585, 0.597868, 0.542286), 
                   (0.107589, 0.261869, 0.434345, 0.602966, 0.761198, 0.886861, 0.952713, 0.979487, 0.991266, 0.996666, 0.999166) ]

    # Curve three
    Curve_three = [ (0.997050, 0.992867, 0.987220, 0.977600, 0.957650, 0.912350, 0.833100, 0.743753, 0.664700, 0.598011, 0.542317),
                    (0.103480, 0.239338, 0.411086, 0.578412, 0.734205, 0.858531, 0.928235, 0.956837, 0.979437, 0.984903, 0.997224) ]

    # Curve four
    Curve_four = [ (0.995750, 0.982433, 0.960270, 0.928964, 0.887517, 0.835059, 0.775115, 0.713273, 0.652159, 0.594189, 0.541702),
                   (0.107366, 0.258592, 0.421263, 0.570542, 0.700825, 0.805936, 0.884097, 0.938723, 0.972731, 0.990533, 0.998092) ]

    # Call the draw function
    draw(Curve_one, Curve_two, Curve_three, Curve_four)


# function entrance
if __name__ == "__main__":
    main()

效果圖: