梯度下降&线性回归

 

 

 

import csv
import random as rd
import matplotlib.pyplot as plt
Inf=1e9

data=csv.reader(open("dataII.csv","r"))

L=list(data);X=[];Y=[]
for row in L:
    X.append(float(row[0]));Y.append(float(row[1]))
N=len(X);step=0.0001

#a=rd.uniform(-Inf,Inf)
#b=float(rd.randint(-100,100))
a=0;b=0
for count2 in range(1000):
    tmp=0.0
    for i in range(N):
        tmp+=a*X[i]*X[i]+b*X[i]-X[i]*Y[i]
    tmp/=N
    aa=a-step*tmp

    tmp=0.0
    for i in range(N):
        tmp+=a*X[i]+b-Y[i]
    tmp/=N
    bb=b-step*tmp

    a=aa
    b=bb

    Q=0.0
    for i in range(N):
        Q+=(a*X[i]+b-Y[i])*(a*X[i]+b-Y[i])
    Q/=(2.0*N)
    print(a,b,Q)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值