前一篇已经总结了梯度下降法,今天尝试将代码用Python实现,之所以选择Python是因为用python写的代码可以短一些=。=
如果哪里不对了,希望可以帮我纠正~~
首先是批量随机梯度法,适用于训练样本数目不是特别多的情况,而且可以用于样本特征数目n更多的情况:
# -*- coding: cp936 -*-
#Training data set
#-----by plz
import numpy as np
def linear_regression(data_x,data_y,m,n,alpha):
ones=np.ones(m)
data_x=np.column_stack((data_x,ones))
theta_guess=np.ones(n+1) #有n个特征,theta就是n+1维
x_trans=data_x.transpose() #data_x的转置矩阵
theta_last=np.zeros(n+1)
theta_loss=theta_guess-theta_last
theta_losssq=np.sum(theta_loss**2)
while(np.sum((theta_guess-theta_last)**2)>0.0000000001):
print "np.sum((theta_guess-theta_last)**2) is:" , np.sum((theta_guess-theta_last)**2)
theta_last=theta_guess
hypothesis=np.dot(data_x,theta_guess)