当前位置: 首页 > news >正文

一元线性回归梯度下降代码

#代价函数
def compute_cost(x, y, w, b):m = x.shape[0] cost = 0for i in range(m):f_wb = w * x[i] + bcost = cost + (f_wb - y[i])**2total_cost = 1 / (2 * m) * costreturn total_cost#计算梯度函数
def compute_gradient(x, y, w, b): m = x.shape[0]    dj_dw = 0dj_db = 0for i in range(m):  f_wb = w * x[i] + b dj_dw_i = (f_wb - y[i]) * x[i] dj_db_i = f_wb - y[i] dj_db += dj_db_idj_dw += dj_dw_i dj_dw = dj_dw / m dj_db = dj_db / m return dj_dw, dj_db#梯度下降函数
def gradient_descent(x, y, w_in, b_in, alpha, num_iters, cost_function, gradient_function): '''x:输入向量,numpy.ndarrayy:输出向量,numpy.ndarrayw_in:初始wb_in:初始balpha:学习率num_iters:迭代次数cost_function:代价函数gradient_function:计算梯度函数'''J_history = [] #记录训练过程中的所有代价p_history = [] #记录训练过程中所有(w,b)b = b_inw = w_infor i in range(num_iters):# 计算偏导,更新参数w,bdj_dw, dj_db = gradient_function(x, y, w , b)     b = b - alpha * dj_db                            w = w - alpha * dj_dw                            # 保存当前代价J和参数(w,b)->可用于后续可视化J_history.append( cost_function(x, y, w , b))p_history.append([w,b])# 打印其中十次训练信息if i% math.ceil(num_iters/10) == 0:print(f"Iteration {i}: Cost {J_history[-1]} ",f"dj_dw: {dj_dw}, dj_db: {dj_db}  ",f"w: {w}, b:{b}")print{f'final w:{w},b:{b}'}#输出目标值与预测值对比y_hat=w*x+b for i in range(x.shape[0])print(f'target value:{y[i]},predicted value:{y_hat[i]},error:{y[i]-y_hat[i]}')return w, b, J_history, p_history 

http://www.mrgr.cn/news/11733.html

相关文章:

  • nginxlvshaproxy负载均衡的区别
  • 关于如何在已有qt项目中添加该项目的单元测试工程
  • [Qt5] 使用QtConcurrent::run在异步线程中执行耗时函数
  • ORACLE EBS R12系统的安装及维护案例
  • 【不合理的递归区间】快排递归引发区间错误,除以0未定义
  • 机器学习:K-means算法(内有精彩动图)
  • MySQL运维学习(2):主从复制
  • 在 Monaco Editor 中自定义右键菜单并支持多级菜单
  • 对于 OpenAI 最新发布 支持实时语音对话的模型GPT-4o,我想说
  • 新手科研人必看! 2024年8月学术论文疑惑解答,迅速提升你的SCI投稿质量。
  • iOS WebView
  • Linux--find命令-搜索
  • kafka
  • Aria2安装和使用-Mac版
  • Nuxt 入门实战 - 05:特性
  • 【Python机器学习】NLP词中的数学——词袋
  • 系统编程-信号量集
  • NLP从零开始------14.文本中阶序列处理之语言模型(2)
  • SSRF漏洞(服务器端请求伪造)相关案例
  • 初识数据库