Как отобразить переменную цикла i на оси x и локальную переменную в цикле на оси y с помощью matplotlib - PullRequest
0 голосов
/ 06 ноября 2019

Я использую NumPy для практики градиентного спуска по линейной регрессии. Вот мой процесс градиентного спуска:

def batch_gradient_descent(data_points, initial_b, initial_W, lr, iterations):
    b = initial_b
    W = initial_W
    for i in range(iterations): # Calcultes Gradient Descent for n-iterations.
        b, W = gradient_step(b, W, data_points, lr)
        current_cost = cost(b, W, data_points)
        # plt.figure(figsize=(8, 4))
        # plt.plot(i, current_cost, linewidth=1)
        # plt.xlabel("iteration")
        # plt.ylabel("log(L)")
        # plt.title("log(L) After "+str(i)+"th iteration")

    plt.show()
    return [b, W]

Мне нужно использовать matplotlib для построения всего лишь двух цифр:

  1. ось X- это i, а ось y - это логарифмическое значение (стоимость) в соответствии с каждым i.

  2. ось x - это i, а ось y - это кривая каждые значение элемента в W, которое является вектором 5 * 1. Таким образом, на этом рисунке будет 5 строк.

Кстати, общее число итераций равно 200, что означает, что диапазон значений по оси x должен быть 0 - 200.

Мое оригинальное решение прокомментировано в коде, но на самом деле оно изображает множество цифр, которые выглядят так: enter image description here enter image description here

Как правильно это сделать?

1 Ответ

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

Вы можете добавить их в список для ваших x и y -осей

x = []
y = []

def batch_gradient_descent(data_points, initial_b, initial_W, lr, iterations):
    b = initial_b
    W = initial_W
    for i in range(iterations): # Calcultes Gradient Descent for n-iterations.
        b, W = gradient_step(b, W, data_points, lr)
        current_cost = cost(b, W, data_points)
        x.append(i)
        y.append(current_cost)
    return [b, W]

, затем построить его так:

plt.figure(figsize=(8, 4))
plt.plot(x, y, linewidth=1)
plt.xlabel("iteration")
plt.ylabel("log(L)")
plt.title("log(L) After " + str(x[-1]) + "th iteration")
plt.show()

enter image description here

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