これで 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]
は更新されません。コードを変更するにはどうすればよいですか?