混淆矩阵字体大小

Confusion Matrix font size

我有一个数字非常小的混淆矩阵,但我找不到改变它们的方法。

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, rf_predictions)
ax = plt.subplot()
sns.set(font_scale=3.0) #edited as suggested
sns.heatmap(cm, annot=True, ax=ax, cmap="Blues", fmt="g");  # annot=True to annotate cells

# labels, title and ticks
ax.set_xlabel('Predicted labels');
ax.set_ylabel('Observed labels');
ax.set_title('Confusion Matrix');
ax.xaxis.set_ticklabels(['False', 'True']);
ax.yaxis.set_ticklabels(['Flase', 'True']);
plt.show()

这就是我正在使用的代码,我得到的图片如下所示:

我不介意手动更改分类号,但我真的不想为 标签 也这样做。

编辑:数字现在变大了,但标签仍然很小

干杯

使用sns.set更改热图值的字体大小。您可以在 ax.set_xlabelax.set_ylabelax.set_title 中将标签和标题的字体大小指定为字典,并在 ax.tick_params 中指定刻度标签的字体大小。


from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, rf_predictions)

ax = plt.subplot()
sns.set(font_scale=3.0) # Adjust to fit
sns.heatmap(cm, annot=True, ax=ax, cmap="Blues", fmt="g");  

# Labels, title and ticks
label_font = {'size':'18'}  # Adjust to fit
ax.set_xlabel('Predicted labels', fontdict=label_font);
ax.set_ylabel('Observed labels', fontdict=label_font);

title_font = {'size':'21'}  # Adjust to fit
ax.set_title('Confusion Matrix', fontdict=title_font);

ax.tick_params(axis='both', which='major', labelsize=10)  # Adjust to fit
ax.xaxis.set_ticklabels(['False', 'True']);
ax.yaxis.set_ticklabels(['False', 'True']);
plt.show()

使用 rcParams 更改绘图中的所有文本:

fig, ax = plt.subplots(figsize=(10,10))
plt.rcParams.update({'font.size': 16})
disp = plot_confusion_matrix(clf, Xt, Yt,
                             display_labels=classes,
                             cmap=plt.cm.Blues,
                             normalize=normalize,
                             ax=ax)

找到了

import itertools
import matplotlib.pyplot as plt

def plot_confusion_matrix(cm,classes,normalize=False,title='Confusion 
                                            matrix',cmap=plt.cm.Blues):

  plt.figure(figsize=(15,10))

  plt.imshow(cm,interpolation='nearest',cmap=cmap)
  plt.title(title)
  plt.colorbar()

  tick_marks=np.arange(len(classes))
  plt.xticks(tick_marks,classes,rotation=45,fontsize=15)
  plt.yticks(tick_marks,classes,fontsize=15,rotation=90)

  if normalize:
     cm=cm.astype('float')/cm.sum(axis=1)[:,np.newaxis]
     cm=np.around(cm,decimals=2)
     cm[np.isnan(cm)]=0.0
     print('Normalized confusion matrix')

  else:
     print('Confusion matrix, without normalization')


  thresh=cm.max()/2

  for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):

    plt.text(j, i, cm[i, j],

             horizontalalignment="center",fontsize=15,

             color="white" if cm[i, j] > thresh else "black")

    plt.tight_layout()

    plt.ylabel('True label',fontsize=20)

    plt.xlabel('Predicted label',fontsize=20)

代码如此更改