Как получить путаницу матрицы с измененным размером вывода и вывода в виде изображения .svg в Python? - PullRequest
0 голосов
/ 08 июля 2019

Я хочу построить матрицу путаницы, так как у меня есть две матрицы, а именно y_test_ и y_pred.Я хочу, чтобы выходное изображение было ".svg".И поскольку я должен поместить изображение в свой проектный отчет, я хочу, чтобы его размер был изменяемым.Я хочу иметь возможность изменять размер изображения в соответствии с требованиями моей бумаги.

Я уже попробовал функцию "confusion_matrix" из "sklearn.metrics".Но выходное изображение слишком мало, чем мне нужно.Кроме того, изображение в формате ".png".Код, который я использовал, приведен ниже.

from sklearn.metrics import confusion_matrix

def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, title=None, cmap=plt.cm.Blues):
    if not title:
        if normalize:
            title = 'Normalized confusion matrix'
        else:
            title = 'Confusion matrix, without normalization'

    cm = confusion_matrix(y_true, y_pred)

    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
        print("Normalized confusion matrix")
    else:
        print('Confusion matrix, without normalization')

    print(cm)

    fig, ax = plt.subplots()
    im = ax.imshow(cm, interpolation='nearest', cmap=cmap)

    ax.figure.colorbar(im, ax=ax)
    ax.set(xticks=np.arange(cm.shape[1]), yticks=np.arange(cm.shape[0]), xticklabels=classes, yticklabels=classes, title=title, 
           ylabel='True label',
           xlabel='Predicted label')

    plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")

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

    for i in range(cm.shape[0]):
        for j in range(cm.shape[1]):
            ax.text(j, i, format(cm[i, j], fmt),
                    ha="center", va="center",
                    color="white" if cm[i, j] > thresh else "black")

    fig.tight_layout()
    return ax

plot_confusion_matrix(y_test_, y_pred, classes=class_names, title='Confusion matrix, without normalization')
plot_confusion_matrix(y_test_, y_pred, classes=class_names, normalize=True, title='Normalized confusion matrix')

plt.show()

Этот код генерирует изображение, которое непонятно наносить на бумагу, и не имеет форму ".svg".Подскажите что делать.

1 Ответ

0 голосов
/ 25 июля 2019

Для очистки Вывод

Вы не предоставили полный код, но, думаю, если вы используете seaborn, вы можете использовать sns.set() следующим образом

import matplotlib.pyplot as plt
import seaborn as sn
sn.set()
%matplotlib inline

Для сохранения файла в формате .svg используйте перед вызовом plt.show()

plt.savefig("test.svg", format="svg")

OR

plt.savefig("test.svg")

...