def train(X, y, k, C):
n = X.shape[0]
m = X.shape[1]
w = np.zeros(m)
c = cost(X, y, w, C)
threshold = 1e-5
for iteration in xrange(10000):
new_w = np.zeros(m)
for j in xrange(m):
sum = 0
for i in xrange(n):
sum += y[i] * X[i, j] * (1 - 1 / (1 + np.exp(-y[i] * np.dot(X[i], w))))
new_w[j] = w[j] + k * sum / np.double(n) - k * C * w[j]
new_cost = cost(X, y, new_w, C)
if distance.euclidean(w, new_w) <= threshold:
return new_w
c = new_cost
w = new_w
return w
评论列表
文章目录