现在我已经实现了python代码。
def logistic(z):
return 1.0 / (1.0 + np.exp(-z))
def gradient_testing(X,Y,w):
K = len(w)
N = len(X)
s = np.zeros(K)
for i in range(N):
s += Y[i] * X[i] * logistic(-Y[i] * np.dot(X[i], w))
s = -1 *s/N
return s
X
是 80*23 矩阵,w
是 1 * 23 矩阵,Y
是 80*1 矩阵。从我的代码中,每次迭代后它都会返回 1*23。但它不满足我的要求。
在第一次迭代中,它会返回 1*23 的值,然后我会选择最大的一个,例如,它是s[8]
. 而当前的迭代,s[8]
将不会从Y[i] * X[i] * logistic(-Y[i] * np.dot(X[i], w))
. 在本次迭代中,如果第 8 个元素Y[i] * X[i] * logistic(-Y[i] * np.dot(X[i], w))
最大,则在下一次迭代s[9]
中不会更新。如何更改我的代码?