in builtin_algorithm_hpo_tabular/util/classification_report.py [0:0]
def generate_classification_report(y_real,
y_predict_proba,
decision_threshold=0.5,
class_names_list=None,
title='Model report',
plot_style='ggplot'):
plt.style.use(plot_style)
if class_names_list is None:
class_names_list = ['Class 0', 'Class 1']
# find out how many classes we have in the test set
number_of_classes = len(np.unique(y_real))
ml_report = 'Number of classes: ' + str(number_of_classes) + '\n'
for i,class_name in enumerate(class_names_list):
ml_report += str(i) + ': ' + str(class_name) + '\n'
ml_report += '\nDecision threshold: ' + str(decision_threshold) + '\n'
ml_report += '\n---------------------Performance--------------------\n\n'
y_decision = y_predict_proba.copy()
y_decision[y_decision>decision_threshold] = 1
y_decision[y_decision<1] = 0
y_decision = y_decision.astype(bool)
# get initial classification report and more text in it
metrics_report = metrics.classification_report(y_real, y_decision)
metrics_ACC = metrics.accuracy_score(y_real, y_decision)
metrics_report += ('\n Total accuracy = ' +
str(round(metrics_ACC*100,2)) + '%')
ml_report += metrics_report
ml_report += '\n\n\n\n\n'
# generate graphs
fig, ax = plt.subplots(2, 2, figsize=(12,9))
plot_text(ml_report, axis=ax[0,0])
plot_confusion_matrix(metrics.confusion_matrix(y_real, y_decision),
class_names_list=class_names_list, axis=ax[0,1])
plot_precision_recall_curve(y_real, y_predict_proba, axis=ax[1,0])
plot_roc_curve(y_real, y_predict_proba, axis=ax[1,1])
fig.suptitle(title, fontsize=15)
fig.tight_layout()