Как вручную разделить ось x графика рассеяния matplotlib, когда x находится в диапазоне 0, 0,001, 0,01, ..., 1000? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь построить график рассеяния с помощью mathplotlib, чтобы указать изменение точности (ось Y) для различных значений 'C' (ось X) в алгоритме Linear SVM. Проблема в следующем:

C_values = [0, 0.001, 0.01, 0.1, 1, 10, 100, 1000]

Из-за значений «0,001, 0,01, 0,1, 1» эта область ужасно узкая и перекрывается на графике, как вы можете видеть на изображении.

Это мой код:

plt.figure()
plt.xlabel('C values')
plt.ylabel('Accuracy')
plt.scatter(C_values, svc_acc_scores)
plt.xticks([0, 0.001, 0.01, 0.1, 1, 10, 100, 1000])

Вот результат, который я получаю:

result

Любая помощь будетоценили. Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2019

Использование логарифмической шкалы и значение x равным 0 проблематично, так как log(0) = -∞. Поэтому лучше всего обойти ноль. Пример кода:

from matplotlib import pyplot as plt

C_values = [0.001, 0.01, 0.1, 1, 10, 100, 1000]
svc_acc_scores = [0.3, 0.4, 0.6, 0.7, 0.8, 0.8, 0.8]

plt.figure()
plt.xlabel('C values')
plt.ylabel('Accuracy')
plt.scatter(C_values, svc_acc_scores)
plt.xscale('log')
plt.xticks([0.001, 0.01, 0.1, 1, 10, 100, 1000])
plt.show()

sample plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...