Функция Python продолжает возвращать Nan? - PullRequest
0 голосов
/ 11 мая 2019

В настоящее время я изучаю Python, переписывая некоторые старые программы, которые я написал, используя другие языки.Но по какой-то причине я продолжаю сталкиваться с проблемой, когда вызов функции продолжает возвращать nan.Ниже приведен фрагмент кода.

Функция theta0PartialDerivative возвращает число, если я вызываю его вне функции градиентного спуска, но в противном случае возвращает нано.Я не уверен, в чем проблема?

def theta0PartialDerivative():
    multBy=40.0
    total=temp=0

    for i in range(40):
        temp+=theta0
        temp+=theta1*sepalWidth[i]
        temp+=theta2*petalLength[i]
        temp+=theta3*petalWidth[i]
        temp-=sepalLength[i]
        total=total+temp
        temp=0
    return (multBy*total)

def gradientDescent():
    alpha=0.5
    global theta0,theta1,theta2,theta3
    theta0After=theta1After=theta2After=theta3After=1
    while(theta0After!=theta0 and theta1After!=theta1 and 
          theta2After!=theta2 and theta3After!=theta3):
        theta0=theta0After
        theta1=theta1After
        theta2=theta2After
        theta3=theta3After

        theta0After=theta0 - (alpha * theta0PartialDerivative())
        theta1After=theta1 - (alpha * theta1PartialDerivative())
        theta2After=theta2 - (alpha * theta2PartialDerivative())
        theta3After=theta3 - (alpha * theta3PartialDerivative())

theta0=theta1=theta2=theta3=accuracy=0
gradientDescent()

Полный файл здесь: https://github.com/MohamedMoustafaNUIG/Linear-Regression-Gradient-Descent-First-Project/blob/master/Linear-Regression-I.py

РЕДАКТИРОВАТЬ: Действительно?Никто не знает, в чем проблема?

1 Ответ

0 голосов
/ 12 мая 2019

Нашел проблему. Альфа, переменная шага, была слишком большой (для набора данных, с которым я имел дело) и приводила к тому, что частные производные расходились, а не сходились. Я изменил альфа с 0,5 до 0,13, и он работает

...