#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. Большое вам спасибо за вашу помощь!