#C++风格代码···
#定义输入输出变量
x=[[1,i]
for i in range(1,11)]
y=[1.212*i+2.331*j for i,j in x]
#m*n维的矩阵
m=10
n=2
#初始参数值
theta=[1,1]
#学习率
a=0.005
#分类函数
def hypothesis(x):
sum=0
for j in range(n):
sum+=x[j]*theta[j]
return sum
#损失函数
def loss_function():
sum=0
for i in range(m):
sum+=(hypothesis(x[i])-y[i])**2
return sum/2
#迭代4000次
for k in range(4000):
sum=[0,0]
for i in range(m):
error=y[i]-hypothesis(x[i]);
for j in range(n):
sum[j]+=error*x[i][j];
for i in range(n):
theta[i]+=a*sum[i]
print(theta)
#其实Python一行就能搞定···
#可以写成矩阵乘积形式,求和可以用内积来代替,因此,普遍写法其实是这样的(dot表示向量的点乘))
#常数*(n+1 * m)维矩阵乘(m * 1)维矩阵。
theta+= alpha*X.T.dot(Y-X.dot(theta))
1.1 线性回归中的两种梯度下降算法(cs229)及其Python实现(纯列表)
最新推荐文章于 2019-03-22 21:25:49 发布