Многовариантный градиентный спускPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Многовариантный градиентный спуск

Сообщение Anonymous »

Я изучаю градиентный спуск для расчета коэффициентов. Ниже описано, что я делаю:

Код: Выделить всё

#!/usr/bin/Python

import numpy as np

# m denotes the number of examples here, not the number of features
def gradientDescent(x, y, theta, alpha, m, numIterations):
xTrans = x.transpose()
for i in range(0, numIterations):
hypothesis = np.dot(x, theta)
loss = hypothesis - y
# avg cost per example (the 2 in 2*m doesn't really matter here.
# But to be consistent with the gradient, I include it)
cost = np.sum(loss ** 2) / (2 * m)
#print("Iteration %d | Cost: %f" % (i, cost))
# avg gradient per example
gradient = np.dot(xTrans, loss) / m
# update
theta = theta - alpha * gradient
return theta

X = np.array([41.9,43.4,43.9,44.5,47.3,47.5,47.9,50.2,52.8,53.2,56.7,57.0,63.5,65.3,71.1,77.0,77.8])
y = np.array([251.3,251.3,248.3,267.5,273.0,276.5,270.3,274.9,285.0,290.0,297.0,302.5,304.5,309.3,321.7,330.7,349.0])
n = np.max(X.shape)
x = np.vstack([np.ones(n), X]).T
m, n = np.shape(x)
numIterations= 100000
alpha = 0.0005
theta = np.ones(n)
theta = gradientDescent(x, y, theta, alpha, m, numIterations)
print(theta)
Теперь мой приведенный выше код работает нормально. Если я теперь попробую несколько переменных и заменю X на X1 следующим образом:

Код: Выделить всё

  X1 = np.array([[41.9,43.4,43.9,44.5,47.3,47.5,47.9,50.2,52.8,53.2,56.7,57.0,63.5,65.3,71.1,77.0,77.8], [29.1,29.3,29.5,29.7,29.9,30.3,30.5,30.7,30.8,30.9,31.5,31.7,31.9,32.0,32.1,32.5,32.9]])
тогда мой код дает сбой и выдает следующую ошибку:

Код: Выделить всё

  JustTestingSGD.py:14: RuntimeWarning: overflow encountered in square
cost = np.sum(loss ** 2) / (2 * m)
JustTestingSGD.py:19: RuntimeWarning: invalid value encountered in subtract
theta = theta - alpha * gradient
[ nan  nan  nan]
Может ли кто-нибудь сказать мне, как я могу выполнить градиентный спуск с помощью X1? Мой ожидаемый результат использования X1:

Код: Выделить всё

[-153.5 1.24 12.08]
Я также открыт для других реализаций Python. Мне просто нужны коэффициенты (также называемые тета) для X1 и y.

Подробнее здесь: https://stackoverflow.com/questions/244 ... nt-descent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как мне реализовать градиентный спуск в нейронной сети?
    Гость » » в форуме Python
    0 Ответы
    35 Просмотры
    Последнее сообщение Гость
  • Невозможно воспроизвести мини-пакетный градиентный спуск Tensorflow.
    Anonymous » » в форуме C++
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous
  • Невозможно воспроизвести мини-пакетный градиентный спуск Tensorflow [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Градиентный спуск для СВР?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • CMake — невозможно правильно связать спуск на спуске на MacOS
    Anonymous » » в форуме C++
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»