gpt4 book ai didi

python - 为什么这个混淆矩阵(matplotlib)在 Jupyter Notebook 中看起来被压扁了?

转载 作者:行者123 更新时间:2023-12-03 21:00:45 34 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





matplotlib/seaborn: first and last row cut in half of heatmap plot

(10 个回答)


2年前关闭。




我正在运行下面的代码以获得混淆矩阵。在我重置笔记本内核之前,输出看起来很棒。我没有更改代码,但现在它看起来被压扁了(图 1)。当我删除 plt.yticks 行(图 2)时它会更正,但我想要这些标签。这可能很简单,但我是 Python 新手。

import itertools
def plot_confusion_matrix(cm, classes,
normalize=False,
title='Confusion Matrix',
cmap=plt.cm.Blues):
"""
This function prints and plots the confusion matrix.
Normalization can be applied by setting `normalize=True`.
Source: http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html
"""
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("Normalized confusion matrix")
else:
print('Confusion matrix, without normalization')

print(cm)

# Plot the confusion matrix
plt.figure(figsize = (6, 6))
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title, size = 25)
plt.colorbar(aspect=5)
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks, classes, rotation=45, size = 12)
plt.yticks(tick_marks, classes, size = 12)

fmt = '.2f' if normalize else 'd'
thresh = cm.max() / 2.

# Labeling the plot
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, format(cm[i, j], fmt), fontsize = 20,
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")

plt.grid(False)
plt.tight_layout()
plt.ylabel('Actual label', size = 15)
plt.xlabel('Predicted label', size = 15)

cm = confusion_matrix(y_test, y_pred)
plot_confusion_matrix(cm, classes = ['Good Mental Health', 'Poor Mental Health'],
title = 'Confusion Matrix')

enter image description here

enter image description here

最佳答案

尝试在代码末尾添加这些行。

plt.tight_layout()
plt.show()

仅此一项就应该有很大帮助。还有一些建议:

1) 我认为发生的事情是您要求 6x6 英寸的数字,这个空间包括标签。更大的数字可能会有所帮助。

2)您可以尝试改进所需空间的使用方式。我肯定会要求标签在两个不同的行中:我猜你有
 tick_marks = ['good mental health', 'poor mental health']

在您的代码中的某处。正在做
 tick_marks = ['good \nmental health', 'poor \nmental health']

也可能有帮助。

3) 另一种改进空间使用方式的方法是旋转 ylabels:
 plt.yticks(tick_marks, classes, size = 12, rotation='vertical')

您应该尝试不同的组合,看看会发生什么。

关于python - 为什么这个混淆矩阵(matplotlib)在 Jupyter Notebook 中看起来被压扁了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57937751/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com