ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Liner Regression

2022-04-02 20:33:27  阅读:173  来源: 互联网

标签:num gradient initial Liner current points iterations Regression




import numpy as np

# y = w*x + b
def compute_error_for_line_given_points(b,w,points):
    totalError=0
    for i in range(0,len(points)):
        x=points[i,0]
        y=points[i,1]
        totalError +=(y-(w*x+b))**2
    return totalError / float(len(points))

def step_gradient(b_current,w_current,points,learningRate):
    b_gradient=0
    w_gradient=0
    N=float(len(points))
    for i in range(0,len(points)):
        x=points[i,0]
        y=points[i,1]
        b_gradient+=-(2/N)*(y-((w_current*x)+b_current))
        w_gradient+=-(2/N)*x*(y-((w_current*x))+b_current)
    new_b = b_current-(learningRate*b_gradient)
    new_w = w_current-(learningRate*w_gradient)
    return [new_b,new_w]

def gradient_descent_runnder(points,starting_b,starting_w,learning_rate,num_iterations):
    b=starting_b
    w=starting_w
    for i in range(num_iterations):
        b,w=step_gradient(b,w,np.array(points),learning_rate)
    return [b,w]

def run():
    points=np.genfromtxt("data.csv",delimiter=',')
    learning_rate=0.0001
    initial_b=0
    initial_w=0
    num_iterations=1000
    print("Starting gradient descent at b={0},w={1},error={2}"
          .format(initial_b,initial_w,
                  compute_error_for_line_given_points(initial_b,initial_w,points))
          )
    print('Running.....')
    [b,w]=gradient_descent_runnder(points,initial_b,initial_w,learning_rate,num_iterations)
    print('After {0} iterations b={1},w={2},error={3}'
          .format(num_iterations,b,w,
                 compute_error_for_line_given_points(b,w,points))
          )

if __name__=='__main__':
    run()

 



标签:num,gradient,initial,Liner,current,points,iterations,Regression
来源: https://www.cnblogs.com/skiper/p/16093827.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有