Ich habe eine Funktion für den Gradientenabstieg geschrieben und bin dabei, herauszufinden, wie man die "iter" -Zeiten der for-Schleife wiederholt. X ist ein 2d-Array und y ist ein 2d-Array. y ist der Zielwert und X sind die Daten, die dem Zielwert entsprechen. Ich möchte beide gleichzeitig durchlaufen, also die zip() in der for-Schleife, aber ich möchte auch in der Lage sein, durch X und y zu wiederholen, aber mit den aktualisierten Koeffizienten.Wie wiederhole ich eine for-Schleife, während ich Werte aus der vorherigen for-Schleife behalte?
Ich habe versucht, die for-Schleife in eine while-Schleife zu wickeln, aber ich bekomme eine Fehlermeldung, dass das Zip-Argument # 2 Iteration unterstützen muss. Ich gehe davon aus, dass, sobald die for-Schleife durch die zweiten Arrays iteriert, der Compiler nicht mehr "zurücksetzen" und die Arrays erneut durchlaufen kann. Habe ich Recht und wie repariere ich das?
def gradient_descent_lr(X,y,alpha,iters):
x_coef = 0
y_int = 0
coef_list = []
for x, y in zip(X,y):
#evaluate func (0 first)
f_eval = (x_coef * x) + y_int
#find error
error = f_eval - y
#update coefficients
y_int = y_int - (alpha*error) #adjust bias coefficient by the error
x_coef = x_coef - (alpha*error*x)
coef_list.append((float(y_int),float(x_coef)))
return coef_list
EDIT:
Nevermind, ich herausgefunden, dass das Problem in Iterationen nicht war, war das Problem, die Variablennamen in mit wobei y in sowohl das Argumente und in der for-Schleife. Sie können diese Frage schließen.
Ich habe etwas Kontext so hoffentlich hinzugefügt, dass hilft. X und Y sind beide ndarrays. – user3002486