Python 3.x 如何更改混淆矩阵中的刻度?
我正在使用混淆矩阵(图a) 如何使我的Python 3.x 如何更改混淆矩阵中的刻度?,python-3.x,numpy,matplotlib,scikit-learn,confusion-matrix,Python 3.x,Numpy,Matplotlib,Scikit Learn,Confusion Matrix,我正在使用混淆矩阵(图a) 如何使我的刻度从1到3开始,而不是从0到2 我尝试在勾选标记中添加+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_matri
刻度从1到3开始,而不是从0到2
我尝试在勾选标记中添加+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
您应该获得plt的轴
,并更改xtick_标签
(如果您打算这样做):
结果:
您应该获得plt的轴
,并更改xtick_标签
(如果您打算这样做):
结果:
我遇到了一个类似的问题:当我想为我的类使用自定义标签时,要么是方形框超出了边界,要么是标签被偏移了,如您所示
如果您有多个标签(>7),那么首先需要使用plticker.MultipleLocator将滴答频率显式设置为1。然后,只需设置x和y记号标签,而不提及记号(不设置XTICK和YTICK很重要。如果这样做,imshow/matshow部分将在顶部被截断。)在plot_MISSION_矩阵函数中添加以下行
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_major_locator(loc)
ax.set_yticklabels(['']+iris.target_names)
ax.set_xticklabels(['']+iris.target_names)
我遇到了一个类似的问题:当我想为我的类使用自定义标签时,要么是方形框超出了边界,要么是标签被偏移了,如您在这里所示
如果您有多个标签(>7),那么首先需要使用plticker.MultipleLocator将滴答频率显式设置为1。然后,只需设置x和y记号标签,而不提及记号(不设置XTICK和YTICK很重要。如果这样做,imshow/matshow部分将在顶部被截断。)在plot_MISSION_矩阵函数中添加以下行
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_major_locator(loc)
ax.set_yticklabels(['']+iris.target_names)
ax.set_xticklabels(['']+iris.target_names)
@Aizzaac将ax.setxticklabels((ax.getxticks()+1.astype(str))
更改为ax.setxticklabels([lab+'s'代表lab in(ax.getxticks()+1.astype(str)]
@Aizzaac如果答案解决了您的问题,请点击该答案的复选标记接受它(如)让其他人注意到它会在第一眼看到时起作用。@Aizzaac将ax.setxticklabels((ax.getxticks()+1.astype(str))
更改为ax.setxticklabels([lab+'s'代表lab in(ax.getxticks()+1.astype(str)])
@Aizzaac如果答案解决了您的问题,请单击该答案的复选标记(如)接受它让其他人注意到它在第一眼就可以工作。