我正在使用混淆矩阵(图A)
如何让ticks
从1到3而不是从0到2开始?
我尝试在tick_marks
中添加+1。但它不起作用(图B)
检查我的代码:
import itertools
cm = confusion_matrix(y_test, y_pred)
np.set_printoptions(precision=2)
print('Confusion matrix, without normalization')
print(cm)
plt.figure()
plot_confusion_matrix(cm)
def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Oranges):
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(len(iris.target_names)) + 1
plt.xticks(tick_marks, rotation=45)
plt.yticks(tick_marks)
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",
color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
图A:
图B
答案 0 :(得分:2)
答案 1 :(得分:0)
我遇到了一个类似的问题:当我想为班级使用自定义标签时,如您在此处所示,方形框超出范围或标签被偏移了。
如果您有多个标签(> 7),则首先需要使用 plticker.MultipleLocator 将刻度频率显式设置为一个。然后,您只需设置x和y刻度标签,而无需提及刻度(不设置xticks和yticks很重要。如果这样做,则imshow / matshow部分会在顶部被剪掉。)在 plot_confusion_matrix 函数。
import matplotlib.ticker as plticker
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(cm,cmap=cmap)
fig.colorbar(cax)
loc = plticker.MultipleLocator(base=1.0)
ax.xaxis.set_major_locator(loc)
ax.yaxis.set_majpr_locator(loc)
ax.set_yticklabels(['']+iris.target_names)
ax.set_xticklabels(['']+iris.target_names)