def pres_rec_f1(Y_true, Y_preds_list): """ Calculates micro, macro and sample averaged metrics for the classification task""" pres_sample, rec_sample, f1_sample, pres_micro, rec_micro, f1_micro, pres_macro, rec_macro, f1_macro = ([],[],[],[],[],[],[],[],[]) for n in [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]: p, r, f, s = precision_recall_fscore_support(Y_true, Y_preds_list[n], average='samples') pres_sample.append(p) rec_sample.append(r) f1_sample.append(f) p, r, f, s = precision_recall_fscore_support(Y_true, Y_preds_list[n], average='micro') pres_micro.append(p) rec_micro.append(r) f1_micro.append(f) p, r, f, s = precision_recall_fscore_support(Y_true, Y_preds_list[n], average='macro') pres_macro.append(p) rec_macro.append(r) f1_macro.append(f) data_reg = {} data_reg['sample'] = (pres_sample, rec_sample, f1_sample) data_reg['micro'] = (pres_micro, rec_micro, f1_micro) data_reg['macro'] = (pres_macro, rec_macro, f1_macro) return data_regif __name__ == '__main__': # Get precision, recall and f1 scores data_reg = pres_rec_f1(Y_true, Y_preds_list) print "report without using the greedy tree step: " print data_reg部分代码如上,出错信息以及数据格式如下: