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

第一阶段-第9天-NumPy多变量回归

今日目标

  1. 理解多变量回归与单变量的区别
  2. 用NumPy实现多变量线性回归
  3. 理解矩阵形式的梯度下降

学习内容

1. 多变量 vs 单变量

单变量:一个输入 → 一个输出

y = w * x + b

多变量:多个输入 → 一个输出

y = w1*x1 + w2*x2 + ... + wn*xn + b

2. 多变量房价预测

假设房价由三个因素决定:

  • 面积(平方米)
  • 楼层
  • 房龄(年)
importnumpyasnp# 训练数据:[面积, 楼层, 房龄] → 房价(万元)X=np.array([[100,5,10],# 100平米, 5楼, 10年房龄[120,8,5],# 120平米, 8楼, 5年房龄[80,3,15],# 80平米, 3楼, 15年房龄[150,10,2],# 150平米, 10楼, 2年房龄[90,6,8],# 90平米, 6楼, 8年房龄])y=np.array([200,280,150,350,180])print("输入矩阵形状:",X.shape)# (5, 3) — 5个样本, 3个特征print("输出向量:",y)

3. 矩阵形式

y = X @ w + b

其中:

  • X:输入矩阵 (n_samples, n_features)
  • w:权重向量 (n_features,)
  • b:偏置标量
  • @:矩阵乘法

4. 用NumPy实现多变量梯度下降

importnumpyasnp# 数据X=np.array([[100,5,10],[120,8,5],[80,3,15],[150,10,2],[90,6,8],])y=np.array([200,280,150,350,180])n_samples,n_features=X.shapeprint(f"样本数:{n_samples}, 特征数:{n_features}")# 初始化w=np.zeros(n_features)b=0.0learning_rate=0.00001# 多变量时需要更小的学习率epochs=1000print("\n开始训练...")forepochinrange(epochs):# 前向计算predictions=X @ w+b# 计算损失loss=np.mean((predictions-y)**2)# 计算梯度error=predictions-y gradient_w=(2/n_samples)*(X.T @ error)gradient_b=(2/n_samples)*np.sum(error)# 更新参数w=w-learning_rate*gradient_w b=b-learning_rate*gradient_bifepoch%200==0:print(f" 轮次{epoch:4d}: 损失={loss:.2f}")print(f"\n训练完成!")print(f"权重:{w}")print(f"偏置:{b:.2f}")# 预测test=np.array([[110,7,6]])# 新房子predicted=test @ w+bprint(f"\n预测: 110平米/7楼/6年房龄 → 房价{predicted[0]:.1f}万元")

5. 数据标准化

多变量时,不同特征的尺度差异很大(面积100 vs 楼层5),需要标准化:

# 计算均值和标准差X_mean=np.mean(X,axis=0)X_std=np.std(X,axis=0)print("均值:",X_mean)print("标准差:",X_std)# 标准化X_normalized=(X-X_mean)/X_stdprint("\n标准化后的数据:")print(X_normalized)# 现在所有特征的均值接近0,标准差接近1

今日练习

练习1:实现标准化并重新训练

importnumpyasnp X=np.array([[100,5,10],[120,8,5],[80,3,15],[150,10,2],[90,6,8],])y=np.array([200,280,150,350,180])# 标准化mean=np.mean(X,axis=0)std=np.std(X,axis=0)X_norm=(X-mean)/std# 训练w=np.zeros(X.shape[1])b=0.0lr=0.01forepochinrange(500):pred=X_norm @ w+b loss=np.mean((pred-y)**2)error=pred-y grad_w=(2/len(y))*(X_norm.T @ error)grad_b=(2/len(y))*np.sum(error)w-=lr*grad_w b-=lr*grad_bprint(f"w ={w}")print(f"b ={b:.2f}")print(f"最终损失 ={loss:.2f}")

练习2:理解矩阵乘法

importnumpyasnp# X是(3, 2),w是(2,),结果是(3,)X=np.array([[1,2],[3,4],[5,6]])w=np.array([10,20])result=X @ wprint("X @ w =",result)# 相当于:# [1*10 + 2*20, 3*10 + 4*20, 5*10 + 6*20]# = [50, 110, 170]

验收标准

  • 能解释多变量回归与单变量的区别
  • 能实现标准化的代码
  • 能运行多变量梯度下降
  • 能理解矩阵乘法的意义
http://www.jsqmd.com/news/1249941/

相关文章:

  • 支付单、业务单与退款单三表对齐实战指南
  • 全球首套多季SAR相干性数据集发布
  • 2026太原古交市管道疏通避坑指南 金池师傅上门快 - 余生黄金回收
  • 2026重庆万州管道疏通防坑指南:利扬师傅30分钟上门实测反馈 - 余生黄金回收
  • 本体和传统数据库的实体有什么区别?
  • 计算机毕业设计之中医经方查询与管理系统设计
  • 寄行李用什么快递便宜?慧寄侠教你一键比价,最多省70%运费! - 快递物流资讯
  • RocketMQ 教程 安装 Dashboard
  • Stable Audio v3 vs Suno V3.5 vs Udio 2.1:专业作曲师盲测打分(含MIDI导出、提示词敏感度、风格可控性三重压测报告)
  • 2026天津津南管道疏通防坑实测:江创师傅上门全流程揭秘 - 余生黄金回收
  • C2000开发实战:位域与Driverlib硬件抽象层深度对比与混合使用策略
  • 新华社专访 | AI赋能深蓝:厦门“文鳐”大模型激活海洋经济新引擎
  • 出海AI企业搭建算力基础设施,要满足哪些核心性能要求?
  • 2026年7月最新江诗丹顿杭州闲林吾悦广场维修保养服务电话 - 江诗丹顿官方服务中心
  • 家庭网络也能玩VLAN?用OpenWrt软路由+普通交换机,隔离IoT设备和访客Wi-Fi的保姆级配置
  • 2026年南岸区会计代理记账实力公司优选指南:服务费用解析 - 装修教育财税推荐2026
  • 2026年福州华硕电脑维修可靠店铺盘点与专业推荐 - 装修教育财税推荐2026
  • 吃透OpenClaw !Windows 系统从零部署,彻底解放重复办公工作
  • 毕设 基于大数据的K-means广告效果分析
  • 从零搭建AI视频工作流,手把手配置本地部署方案,Stable Video Diffusion vs. Kling vs. 月之暗面(附GPU显存占用实测表)
  • 抖掌柜无货源上架完整操作教程:从选品筛选、素材采集清洗、AI合规检测到商品发布全流程步骤详解 - 电商分享
  • 基于TMS320DM642视频端口实现DSP间高速数据通信的工程实践
  • DSP性能优化实战:基于XDS560 Trace与AET的硬件级剖析
  • Redis集群在高频优惠券查询场景下的缓存穿透与雪崩治理
  • 深入解析I2C总线:从时钟同步到SMBus协议的工业级应用
  • 2026企业级AI编程平台推荐,国内主流企业级AI代码助手市场趋势及选型指南
  • 2026泉州本地SEO/GEO优化公司靠谱口碑推荐,技术实力+落地实战附服务商案例盘点 - 资讯速览
  • 桥隧坡监测服务商怎么选?
  • 2026年北京门头沟管道疏通避坑指南 - 余生黄金回收
  • 线性代数硬核实战:向量组的秩与 SVD 低秩近似(附完整代码)