#NEWLINE# def test_multiclass( ) : #NEWLINE# #INDENT# test_statistic = recall_at_fpr ( 0.1 ) #NEWLINE# score_labels = [ ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.92 , #NEWLINE# 'b' : 0.03 , #NEWLINE# 'c' : 0.05 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.5 , #NEWLINE# 'b' : 0.15 , #NEWLINE# 'c' : 0.35 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'a' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.12 , #NEWLINE# 'b' : 0.82 , #NEWLINE# 'c' : 0.1 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.19 , #NEWLINE# 'b' : 0.6 , #NEWLINE# 'c' : 0.21 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'b' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.05 , #NEWLINE# 'b' : 0.1 , #NEWLINE# 'c' : 0.85 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.32 , #NEWLINE# 'b' : 0.36 , #NEWLINE# 'c' : 0.32 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'c' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.92 , #NEWLINE# 'b' : 0.03 , #NEWLINE# 'c' : 0.05 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.5 , #NEWLINE# 'b' : 0.15 , #NEWLINE# 'c' : 0.35 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'a' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.12 , #NEWLINE# 'b' : 0.82 , #NEWLINE# 'c' : 0.1 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.19 , #NEWLINE# 'b' : 0.6 , #NEWLINE# 'c' : 0.21 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'b' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.05 , #NEWLINE# 'b' : 0.1 , #NEWLINE# 'c' : 0.85 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.32 , #NEWLINE# 'b' : 0.36 , #NEWLINE# 'c' : 0.32 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'c' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.92 , #NEWLINE# 'b' : 0.03 , #NEWLINE# 'c' : 0.05 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.5 , #NEWLINE# 'b' : 0.15 , #NEWLINE# 'c' : 0.35 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'a' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.12 , #NEWLINE# 'b' : 0.82 , #NEWLINE# 'c' : 0.1 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.19 , #NEWLINE# 'b' : 0.6 , #NEWLINE# 'c' : 0.21 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'b' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.05 , #NEWLINE# 'b' : 0.1 , #NEWLINE# 'c' : 0.85 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.32 , #NEWLINE# 'b' : 0.36 , #NEWLINE# 'c' : 0.32 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'c' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.92 , #NEWLINE# 'b' : 0.03 , #NEWLINE# 'c' : 0.05 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.5 , #NEWLINE# 'b' : 0.15 , #NEWLINE# 'c' : 0.35 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'a' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.12 , #NEWLINE# 'b' : 0.82 , #NEWLINE# 'c' : 0.1 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.19 , #NEWLINE# 'b' : 0.6 , #NEWLINE# 'c' : 0.21 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'b' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.05 , #NEWLINE# 'b' : 0.1 , #NEWLINE# 'c' : 0.85 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.32 , #NEWLINE# 'b' : 0.36 , #NEWLINE# 'c' : 0.32 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'c' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.92 , #NEWLINE# 'b' : 0.03 , #NEWLINE# 'c' : 0.05 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.5 , #NEWLINE# 'b' : 0.15 , #NEWLINE# 'c' : 0.35 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'a' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.12 , #NEWLINE# 'b' : 0.82 , #NEWLINE# 'c' : 0.1 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.19 , #NEWLINE# 'b' : 0.6 , #NEWLINE# 'c' : 0.21 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'b' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.05 , #NEWLINE# 'b' : 0.1 , #NEWLINE# 'c' : 0.85 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.32 , #NEWLINE# 'b' : 0.36 , #NEWLINE# 'c' : 0.32 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'c' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.92 , #NEWLINE# 'b' : 0.03 , #NEWLINE# 'c' : 0.05 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.5 , #NEWLINE# 'b' : 0.15 , #NEWLINE# 'c' : 0.35 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'a' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.12 , #NEWLINE# 'b' : 0.82 , #NEWLINE# 'c' : 0.1 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.19 , #NEWLINE# 'b' : 0.6 , #NEWLINE# 'c' : 0.21 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'b' ) , ( { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.05 , #NEWLINE# 'b' : 0.1 , #NEWLINE# 'c' : 0.85 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , { #NEWLINE# #INDENT# 'probability' : { #NEWLINE# #INDENT# 'a' : 0.32 , #NEWLINE# 'b' : 0.36 , #NEWLINE# 'c' : 0.32 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } , 'c' ) ] #NEWLINE# ( all_right , sometimes_right , labels ) = zip ( * score_labels ) #NEWLINE# stats = test_statistic . score ( all_right , labels ) #NEWLINE# eq_ ( test_statistic . format ( stats , format = 'json' ) , { #NEWLINE# #INDENT# 'a' : { #NEWLINE# #INDENT# 'threshold' : 0.92 , #NEWLINE# 'recall' : 1.0 , #NEWLINE# 'fpr' : 0.0 , #NEWLINE# #UNINDENT# } , #NEWLINE# 'b' : { #NEWLINE# #INDENT# 'threshold' : 0.82 , #NEWLINE# 'recall' : 1.0 , #NEWLINE# 'fpr' : 0.0 , #NEWLINE# #UNINDENT# } , #NEWLINE# 'c' : { #NEWLINE# #INDENT# 'threshold' : 0.85 , #NEWLINE# 'recall' : 1.0 , #NEWLINE# 'fpr' : 0.0 , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } ) #NEWLINE# stats = test_statistic . score ( sometimes_right , labels ) #NEWLINE# eq_ ( test_statistic . format ( stats , format = 'json' ) , { #NEWLINE# #INDENT# 'a' : { #NEWLINE# #INDENT# 'threshold' : 0.5 , #NEWLINE# 'recall' : 1.0 , #NEWLINE# 'fpr' : 0.0 , #NEWLINE# #UNINDENT# } , #NEWLINE# 'b' : { #NEWLINE# #INDENT# 'threshold' : 0.6 , #NEWLINE# 'recall' : 1.0 , #NEWLINE# 'fpr' : 0.0 , #NEWLINE# #UNINDENT# } , #NEWLINE# 'c' : { #NEWLINE# #INDENT# 'threshold' : None , #NEWLINE# 'recall' : None , #NEWLINE# 'fpr' : None , #NEWLINE# #UNINDENT# } , #NEWLINE# #UNINDENT# } ) #NEWLINE# assert ( len ( test_statistic . format ( stats ) ) > 5 )