简单回归问题实战

server/2024/9/23 12:20:40/

数据表:链接: https://pan.baidu.com/s/1sSz7F_yf_JeumXcP4EjE5g?pwd=753f 提取码: 753f

核心流程:

在这里插入图片描述

python">import numpy as np
# 计算误差函数 points是数据集中数据的位置
def compute_error_for_line_given_points(b,w,points):totalError=0for 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=0w_gradient=0N=float(len(points))for i in range(0,len(points)):x=points[i,0]y=points[i,1]b_gradient+=(2*(w_current*x+b_current-y))/N     # loss函数对b求导  学习率的公式!w_gradient+=(2*(w_current*x+b_current-y)*x)/N   # loss函数对w求导new_b=b_current-learningRate*b_gradientnew_w=w_current-learningRate*w_gradientreturn [new_b,new_w]def gradient_descent_runner(points,starting_b,starting_w,learing_rate,num_iterations):b=starting_bw=starting_wmin_error = float('inf')  # 初始化为正无穷大best_b = bbest_w = wfor i in range(num_iterations):b,w=step_gradient(b,w,np.array(points),learing_rate)error = compute_error_for_line_given_points(b, w, points)# 如果当前误差小于之前记录的最小误差,则更新最小误差和最佳参数if error < min_error:min_error = errorbest_b = bbest_w = wreturn [b,w,best_b,best_w]def run():points=np.genfromtxt("E:/first/project/resource/pytorch/simple-regression/data.csv",delimiter=",")learning_rate=0.0001initial_b=0initial_w=0num_iterations=1000print("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)))[b,w,best_b,best_w]=gradient_descent_runner(points,initial_b,initial_w,learning_rate,num_iterations)print("After {0} interations b={1},w={2},error={3}".format(num_iterations,b,w,compute_error_for_line_given_points(b,w,points)))print("After {0} interations best_b={1},best_w={2},error={3}".format(num_iterations,best_b,best_w,compute_error_for_line_given_points(best_b,best_w,points)))
run()

当梯度下降法逐渐接近损失函数的最小值时,损失函数对参数的梯度(即导数)会趋近于零。这是因为在最小值点处,损失函数的变化率(即斜率)是最小的。因此,当 b_gradient 和 w_gradient 变得非常小时,更新量 learningRate * b_gradient 和 learningRate * w_gradient 也会变得非常小,导致 b 和 w 的变化几乎可以忽略不计。所以一般线性模型只有一个最低点的时候,会出现这种情况,找到最合适的b w后,后续迭代参数几乎不会变化

的变化几乎可以忽略不计。所以一般线性模型只有一个最低点的时候,会出现这种情况,找到最合适的b w后,后续迭代参数几乎不会变化

在这里插入图片描述


http://www.ppmy.cn/server/100484.html

相关文章

书生实战营-入门导-L2-Git

任务一&#xff1a; fork仓库、添加文件、push文件、新建pr pr链接&#xff1a;git_1847_introduction by Whale-Yu Pull Request #1619 InternLM/Tutorial GitHub 任务二&#xff1a; 新建个人笔记仓库&#xff1a; 新建文件&#xff1a; 然后github新建一个仓库&#xf…

docker compose部署rabbitmq集群,并使用haproxy负载均衡

一、创建rabbitmq的data目录 mkdir data mkdir data/rabbit1 mkdir data/rabbit2 mkdir data/rabbit3 二、创建.erlang.cookie文件&#xff08;集群cookie用&#xff09; echo "secretcookie" > .erlang.cookie 三、创建haproxy.cfg配置文件 global log stdout fo…

SQL每日一练-0814

今日SQL题难度&#xff1a;&#x1f31f;☆☆☆☆☆☆☆☆☆ 1、题目要求 找出每个部门中薪资最高的员工显示部门ID、部门名称、员工ID、员工姓名以及对应的薪资 2、表和虚拟数据 现有两个表&#xff1a;Employees 和 Departments&#xff0c;记录了员工和部门信息。…

Spring Boot - 在Spring Boot中实现灵活的API版本控制(下)_ 封装场景启动器Starter

文章目录 Pre设计思路ApiVersion 功能特性使用示例配置示例 ProjectStarter Code自定义注解 ApiVersion配置属性类用于管理API版本自动配置基于Spring MVC的API版本控制实现WebMvcRegistrations接口&#xff0c;用于自定义WebMvc的注册逻辑扩展RequestMappingHandlerMapping的类…

【Linux】Rsync 服务环境部署

一、实验设备 服务端&#xff1a;172.16.1.31客户端&#xff1a;172.16.1.7 二、实验步骤 A 服务端 步骤1&#xff1a;安装&#xff08;更新至最新版&#xff09; yum install -y rsync 步骤2&#xff1a;配置文件 # 新建配置文件 vim /etc/rsyncd.conf # 添加所需配置信息…

Datawhale AI 夏令营第四期 大模型技术-微调 task2 baseline1精讲

1.数据处理思路介绍 1.1 赛题讲解 图1 数据说明 图2 提交界面说明 图3 输出样例 通过上面的描述我们能看到在图1数据说明及图2提交界面中需要我们进行数据处理&#xff0c;然后进行微调。我们要做的是通过大语言模型&#xff0c;输入阅读材料&#xff0c;阅读材料是高考的语文…

多云网络部署存在挑战,F5分布式云应用简化方案解读

伴随着人工智能与云计算领域的深度融合与集中爆发&#xff0c;企业在多云环境中面临着挑战&#xff0c;包括复杂性、成本和风险的增加等……对于高度敏捷企业中的开发团队而言&#xff0c;传统网络的沉重运维成本和低效率将会成为发展的障碍。作为一家提供多云应用安全和应用交…

【el-table】横向滚动条加粗后,滚动到固定列下被遮挡,已解决

横向滚动条按要求加粗后&#xff0c;遇到的问题&#xff1a;列表的操作列是固定在最右侧的&#xff0c;当滚动条滑动到最右侧的时候&#xff0c;滚动条被遮挡了 我尝试了几种方法都不行&#xff0c;比如找到.el-table__fixed-right .el-table__fixed-footer-wrapper &#xff…