LR:
softmax:
def soft_max(data, K, alpha, lamda):
n = len(data[0]) - 1 #样本维度
w = np.zeros((K, n)) #当前权值,每个类都有自己的权值
wNew = np.zeros((K, n)) #临时权值:迭代过程中的权值
for times in range(1000):
for d in data:
x = d[:-1] #输入向量
for k in range(K): # K:类别数目
y = 0 # 期望输出(标量)
if int(d[-1] + 0.5) == k:
y = 1
p = predict(w, x, k)
g = (y - p) * x #梯度(n维列向量)
wNew[k] = w[k] + (alpha * g + lamda * w[k])
w = wNew.copy()
return w