Как построить тепловую карту на основе результатов GradientBoost?

#python #pandas #machine-learning #seaborn

#python #pandas #машинное обучение #seaborn

Вопрос:

Я хочу напечатать тепловую карту матрицы путаницы на основе моих результатов y_predict и y_train.

Я немного застрял, и я уже просмотрел документацию pandas по тепловой карте, но все еще не знаю, как применить ее к моим результатам. Набор данных, который я использовал, касается доходов и содержит категориальные и числовые данные. Я уже применил классификатор GB и получил результат. Единственное, что остается, это тепловая карта.

 print(confusion_matrix(y_train,y_pred_train))
print(y_train)
  

это был результат

 Confusion Matrix:


[[14151   710]
 [ 1844  2831]]
Name: income, Length: 19536, dtype: int64
  

это была попытка создать тепловую карту

 import seaborn as sns
class_names = y_train, y_pred_train

def print_confusion_matrix(confusion_matrix, class_names, figsize = (10,7), fontsize=14):
    df_cm = pd.DataFrame(
        confusion_matrix, index=class_names, columns=class_names, 
    )
    fig = plt.figure(figsize=figsize)
    try:
        heatmap = sns.heatmap(df_cm, annot=True, fmt="d")
    except ValueError:
        raise ValueError("Confusion matrix values must be integers.")
    heatmap.yaxis.set_ticklabels(heatmap.yaxis.get_ticklabels(), rotation=0, ha='right', fontsize=fontsize)
    heatmap.xaxis.set_ticklabels(heatmap.xaxis.get_ticklabels(), rotation=45, ha='right', fontsize=fontsize)
    plt.ylabel('True label')
    plt.xlabel('Predicted label')
    return fig
  

который вернул

 NameError                                 Traceback (most recent call last)
<ipython-input-36-3bd0e9ee90a4> in <module>()
     18     plt.xlabel('Predicted label')
     19     return fig
---> 20 print(fig)

NameError: name 'fig' is not defined

  

Итак, чего мне не хватает, когда я создаю тепловую карту матрицы путаницы для своих результатов?

Комментарии:

1. Вы можете вызвать функцию с вашей матрицей путаницы, смотрите Мой ответ для примера

2. Ошибка в том, print(fig) что fig она определена внутри функции, и если вы хотите использовать ее вне области действия функции, вы можете установить ее с помощью fig = print_confusion_matrix(... , поскольку она возвращается из вашей функции с помощью return fig

Ответ №1:

Вы можете вызвать свою print_confusion_matrix функцию с матрицей путаницы и списком имен классов в качестве параметров:

 def print_confusion_matrix(confusion_matrix, class_names, figsize = (10,7), fontsize=14):
    df_cm = pd.DataFrame(
        confusion_matrix, index=class_names, columns=class_names, 
    )
    fig = plt.figure(figsize=figsize)
    try:
        heatmap = sns.heatmap(df_cm, annot=True, fmt="d")
    except ValueError:
        raise ValueError("Confusion matrix values must be integers.")
    heatmap.yaxis.set_ticklabels(heatmap.yaxis.get_ticklabels(), rotation=0, ha='right', fontsize=fontsize)
    heatmap.xaxis.set_ticklabels(heatmap.xaxis.get_ticklabels(), rotation=45, ha='right', fontsize=fontsize)
    plt.ylabel('True label')
    plt.xlabel('Predicted label')
    return fig

confusion_matrix = np.array([[14151, 710], [1844, 2831]])
fig = print_confusion_matrix(confusion_matrix, ['0', '1'])
  

Вывод:

введите описание изображения здесь

Комментарии:

1. Большое вам спасибо за вашу помощь!