def evaluate_model(self, x, w):
if not self.regularization or self.lambd == 0:
edge_weight = x.dot(w)
edge_weight = np.multiply(edge_weight, self.skipped)
else:
edge_weight = np.zeros((1, self.num_edges))
for idx, value in izip(x.indices, x.data):
# edge_weight = np.add(edge_weight, np.multiply(value, np.multiply(np.maximum(np.subtract(np.abs(w[idx, :]), self.lambd), 0), np.sign(w[idx, :]))))
for edge in xrange(self.num_edges):
if w[idx, edge] > self.lambd:
edge_weight[0, edge] += value * (w[idx, edge] - self.lambd)
elif w[idx, edge] < -self.lambd:
edge_weight[0, edge] += value * (w[idx, edge] + self.lambd)
return edge_weight
评论列表
文章目录