首页 > 其他分享 >numpy梯度回传\线性回归

numpy梯度回传\线性回归

时间:2024-08-17 11:39:17浏览次数:9  
标签:dj wb gradient 梯度 db cost 回传 dw numpy

 1 import math
 2 import numpy as np
 3 x_train = np.array([1.0, 2.0, 3.0])
 4 y_train = np.array([300.0, 350.0, 500])
 5 
 6 def compute_cost(x, y, w, b):
 7     m = x.shape[0]
 8     f_wb = w * x + b
 9     cost = ((f_wb - y) ** 2).sum()
10     total_cost = cost / (2 * m)
11     return total_cost
12 
13 def compute_gradient(x, y, w, b):     
14     m = x.shape[0]    
15     dj_dw, dj_db = 0, 0
16     
17     for i in range(m):  
18         f_wb = w * x[i] + b 
19         dj_dw_i = (f_wb - y[i]) * x[i] 
20         dj_db_i = f_wb - y[i] 
21         dj_db += dj_db_i
22         dj_dw += dj_dw_i 
23     dj_dw = dj_dw / m 
24     dj_db = dj_db / m 
25         
26     return dj_dw, dj_db
27 
28 def gradient_descent(x, y, w_in, b_in, alpha, num_iters, cost_function, gradient_function): 
29 
30     b = b_in
31     w = w_in
32             
33     for i in range(num_iters):
34         dj_dw, dj_db = gradient_function(x, y, w , b)
35         b = b - alpha * dj_db
36         w = w - alpha * dj_dw
37         cost = cost_function(x, y, w , b)
38         
39         if i% math.ceil(num_iters/10) == 0:
40             print(f"Iteration {i}: Cost {cost:.2f}, Gradient (dw: {dj_dw:.3f}, db: {dj_db:.3f}), Parameters (w: {w:.3f}, b: {b:.5f})")
41  
42     return w, b
43 
44 w_init = 0
45 b_init = 0
46 
47 iterations = 1000
48 tmp_alpha = 0.001
49 
50 w_final, b_final= gradient_descent(x_train ,y_train, w_init, b_init, tmp_alpha, 
51                                                     iterations, compute_cost, compute_gradient)
52 
53 print(f"(w,b) found by gradient descent: ({w_final:8.4f},{b_final:8.4f})")

 

标签:dj,wb,gradient,梯度,db,cost,回传,dw,numpy
From: https://www.cnblogs.com/alexlord/p/18364176

相关文章

  • 【机器学习算法】梯度提升决策树
    梯度提升决策树(GradientBoostingDecisionTrees,GBDT)是一种集成学习方法,它通过结合多个弱学习器(通常是决策树)来构建一个强大的预测模型。GBDT是目前最流行和最有效的机器学习算法之一,特别适用于回归和分类任务。它在许多实际应用中表现出色,包括金融风险控制、搜索排名、......
  • 深度学习梯度下降算法,链式法则,反向传播算法
    多层神经网络的学习能力比单层网络强得多。想要训练多层网络,需要更强大的学习算法。误差反向传播算法(BackPropagation)是其中最杰出的代表,它是目前最成功的神经网络学习算法。现实任务使用神经网络时,大多是在使用BP算法进行训练,值得指出的是BP算法不仅可用于多层前馈神经网......
  • python之numpy (5 分割和复制)
    分割分割指将矩阵分割为几个小部分,以便于后续的计算需要。splitimportnumpyasnpm=np.random.random((3,3))print(m)sp=np.split(m,3,axis=0)ssp=np.split(m,3,axis=1)print(sp,ssp,sep='\n')[[0.373247510.933194940.18961048][0.814330810.377225750.00708......
  • python之numpy(4 选择数据及合并)
    选择数据importnumpyasnpm=np.random.random((3,3))print(m)print(m[0],m[1][1],sep='\n')print(m[1,1])print(m[1,:])print(m[:,1])结果:[[0.25960570.047399260.76332494][0.865032270.290489970.79591841][0.50535280.201822340.19601046]][......
  • python之numpy(1 安装及基本介绍)
    numpy介绍numpy是Python中的一个非常流行的库,它提供了大量的数学函数工具,特别是针对数组和矩阵的操作。numpy的全称是NumericalPython,它极大地简化了数组和矩阵的运算,使得Python成为进行科学计算的一个强大工具。安装numpy要安装numpy,需在终端(win+r---->cmd)提示符下执......
  • 数据分析 Numpy+Scipy+Matplotlib+Pandas
    数据分析Numpy+Scipy+Matplotlib+Pandas基础数值算法科学计算数据可视化序列高级函数一、numpy是什么?1.NumericalPython,数值的Python,补充了Python语言所欠缺的数值计算能力。2.Numpy是其它数据分析及机器学习库的底层库。3.Numpy完全标准C语言实现,运行效率充分优化。......
  • 计算机视觉2:NumPy模块函数学习
    NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含一个强大的N维数组对象ndarray、广播功能函数、整合C/C++/Fortran代码的工具和线性代数、傅里叶变换、随机数生成等功能。将NumPy包引入,没有的话需要先安装。importnumpyasnp一、ndarray对象NumPy最重要的一个......
  • 3-随机梯度下降
    随机梯度下降可以跨越鞍点对每一个样本的梯度进行更新点击查看代码importnumpyasnpimportmatplotlib.pyplotaspltx_data=[1.0,2.0,3.0]y_data=[2.0,4.0,6.0]w=1.0defforward(x):returnx*wdefloss(x,y):y_pred=forward(x)ret......
  • 大话Numpy(一)数组——升级的List
    摘要以实例为导向,用一种简单易懂的方式介绍Numpy。笔者直接将numpy的方法写入目录,便于查询。参考文档:https://numpy.org/doc/stable/user/index.htmlhttps://numpy.org/doc/stable/user/absolute_beginners.htmlhttps://edu.csdn.net/job/pythonbe_02/python-3-195To:......
  • 使用Pandas和NumPy实现数据获取
    公众号本文地址:https://mp.weixin.qq.com/s/Uc4sUwhjLTpOo85ubj0-QA以某城市地铁数据为例,通过提取每个站三个月15分钟粒度的上下客量数据,展示Pandas和Numpy的案例应用。数据:http://u6v.cn/5W2i8Hhttp://u6v.cn/6hUVjk初步发现数据有三个特点::1、地铁数据的前五行是无效的,......