我已經寫了一個梯度下降的功能,並堅持瞭解如何重複for循環「iters」時間。 X是一個二維數組,y是一個二維數組。 y是目標值,X是與目標值對應的數據。我想通過兩者同時遍歷for循環中的zip(),但我也希望能夠重複遍歷X和y,但使用更新後的係數。如何在保持前一個for循環的值的同時重複執行for循環?
我試着在while循環中封裝for循環,但是我得到一個錯誤,說明zip參數#2必須支持迭代。我假設發生的事情是,一旦for循環遍歷2ndarray,編譯器就不能「重置」並再次遍歷數組。我是否正確,我該如何解決這個問題?
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
編輯:
沒關係,我想通了,這個問題是不是在重複,問題是在這兩個參數具有變量名是Y和在for循環。你可以關閉這個問題。
我添加了一些上下文,希望這有助於。 X和Y都是ndarrays。 – user3002486