linear regression
下面的程序,是我写的一个非常简单的线性回归的机器学习的例程,其中用到了adagrad,并没有向量话,比较适合初学者
import numpy as np
lr=1 //learning rate
interation=1000//计算次数
x_data=[1,4,0.5,6,9,0.5,0.3,10,4,0.4]
y_data=np.zeros(len(x_data))
for i in range(0,len(x_data)):
y_data[i]=x_data[i]*14+8
weight=0
bias=10
learning_rate_weight=0.0
learning_rate_bias=0.0
w_grad=0.0
b_grad=0.0
for m in range(interation):
for n in range(len(x_data)):
w_grad = w_grad -2*x_data[n]*(y_data[n] -weight*x_data[n]-bias)#将所有的数据对应的导数进行求和
b_grad = b_grad - 2 * (y_data[n] -weight * x_data[n] - bias)#同上
learning_rate_weight =learning_rate_weight + w_grad ** 2 #将目前有的导数进行求和
learning_rate_bias =learning_rate_bias + b_grad ** 2
weight =weight-lr/np.sqrt(learning_rate_weight) * w_grad #更新weight
bias =bias-lr/np.sqrt(learning_rate_bias) * b_grad
print weight
print bias