详解np.random.normal(0, 3, size=x.shape)

news/2025/11/28 21:44:21/文章来源:https://www.cnblogs.com/wangya216/p/19284228

一、完整语法与参数解释

np.random.normal(loc=0, scale=1, size=None) 是 NumPy 中生成「正态分布(高斯分布)」随机数的核心函数,参数含义如下:

参数名 默认值 作用说明 对应代码中的含义
loc 0 正态分布的「均值(μ)」,决定分布的中心位置 噪声的平均值为 0(即噪声围绕真实值上下波动,不偏向正/负方向)
scale 1 正态分布的「标准差(σ)」,决定分布的离散程度 噪声的波动幅度为 1(标准差越大,噪声越分散;越小越集中)
size None 生成的随机数的「形状」(如1D数组、2D数组) x.shape 表示:噪声数组的行数、列数和 x 完全一致(确保能和 y_true 逐元素相加)

二、结合之前的代码场景理解

之前的代码中,这行是用来给「真实模型」添加噪声,模拟真实世界的数据(真实数据不会完美贴合理论模型,总会有测量误差、环境干扰等噪声):

y_true = 2 * x**2 + 3 * x + 1  # 理论上的真实模型(无噪声,完美曲线)
y = y_true + np.random.normal(0, 1, size=x.shape)  # 加入噪声后的真实数据(散点)

具体效果:

  • y_true 是纯理论值(比如100个 x 对应100个精准的 y 值,画出来是光滑的红色曲线);
  • np.random.normal(0,1,size=x.shape) 生成100个随机数(和 x 一样是 (100,1) 的2D数组),每个数都符合「均值0、标准差1」的标准正态分布;
  • 把这100个随机数(噪声)加到 y_true 上,得到 y(带噪声的真实数据)—— 这就是我们后续用来训练模型的「原始数据」(蓝色散点)。

三、关键细节:正态分布与噪声的合理性

  1. 为什么用正态分布?
    真实世界中的噪声(如测量误差、环境干扰)大多遵循正态分布(中心极限定理):大部分噪声接近0(小误差),极少数噪声偏离0较远(大误差),这符合实际场景(比如用尺子测量长度,误差一般在±1mm内,很少出现±1cm的大误差)。

  2. 参数调整的影响(如果修改参数):

    • 若把 loc=0 改成 loc=2:噪声均值为2,所有 y 值都会整体上移2(数据偏向正方向),但模型仍能通过拟合修正这个偏移;
    • 若把 scale=1 改成 scale=3:噪声标准差变大,数据点会更分散(离红色真实曲线更远),模型拟合难度增加(MSE会更高);
    • 若把 scale=0.1:噪声极小,数据点几乎贴合真实曲线,模型很容易拟合出完美结果。

四、小例子:直观感受生成的随机数

运行以下代码,就能看到 np.random.normal(0,1,size=(5,1)) 生成的随机噪声是什么样的:

import numpy as np
np.random.seed(42)  # 固定种子,让结果可复现# 生成5个符合标准正态分布的随机数(2D数组,和x的形状一致)
noise = np.random.normal(0, 1, size=(5, 1))
print("生成的噪声数据:")
print(noise)

输出(每次运行种子42时都相同):

生成的噪声数据:
[[ 0.49671415][-0.1382643 ][ 0.64768854][ 1.52302986][-0.23415337]]

可以看到:

  • 数值围绕0波动(符合均值0);
  • 大部分数值在±1.5之间(符合标准差1,正态分布中约95%的数据在±2σ内);
  • 形状是 (5,1) 的2D数组(如果 x 是 (100,1),这里就会生成100个值)。

五、和代码其他部分的关联

  • 因为 size=x.shape,所以噪声数组和 xy_true 的维度完全匹配(都是 (100,1)),才能用 + 号逐元素相加(广播机制);
  • 之前设置的 np.random.seed(42) 会影响这里的噪声生成——固定种子后,每次运行生成的噪声都一样,确保后续的模型训练、数据划分结果可复现;
  • 噪声的存在是「多项式次数选择」的前提:如果没有噪声(scale=0),高次多项式(如10次)也能完美拟合 y_true,无法体现过拟合(训练集MSE极小但验证集MSE飙升)的现象。

总结

np.random.normal(0, 1, size=x.shape) 的核心作用是:
生成「标准正态分布」的随机噪声,形状与 x 一致,用于给理论模型 y_true 添加不确定性,模拟真实数据的特点——这是后续能区分「欠拟合、合适拟合、过拟合」的关键前提。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/980117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录Day23_回溯_组合.md

代码随想录Day23_回溯_组合.md回溯练习:再有重复元素和无重复元素的数组中分别找到和为target的子集,以及给出指定字符串的回文子字符串。在数组中找出和为固定值的组合在有重复数字的数组中找出和为固定值的组合 给…

详细介绍:【JUnit实战3_21】第十二章:JUnit 5 与主流 IDE 的集成 + 第十三章:用 JUnit 5 做持续集成(上):在本地安装 Jenkins

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

代码随想录Day24_回溯_复原IP.md

代码随想录Day24_回溯_复原IP.md复原IP地址 题目理解 1.给出的是字符串,IP地址在【0,255】之间,字符串转数字; 2.0可以单独出现,但是不能跟数字出现; 3.字符串中要插入.; 4.字符串的大小范围在4~12之间; 5.不能…

何以为生

何以为生何以为生人造的东西 价值不贵。 天然的才是资源。不能打断别人说话, 不急不躁。很想买入一支股票。。。

GraphRAG进阶:基于Neo4j与LlamaIndex的DRIFT搜索实现详解

微软的GraphRAG算得上是最早一批成熟的GraphRAG系统,它把索引阶段(抽取实体、关系、构建层级社区并生成摘要)和查询阶段的高级能力整合到了一起。这套方案的优势在于,可以借助预先计算好的实体、关系、社区摘要来回…

Gemini3疯了!0.09接入Nano Banana Pro 4k画质API(附实战教程)

2025年11月20日谷歌正式推出Nano Banana Pro(官方名称Gemini 3 Pro Image)时,Ai图像生成最强模型。这款基于Gemini 3 Pro foundation打造的新一代图像生成与编辑模型,不仅在图像质量上达到了全新高度,更在4K高清分…

11/28

今天没课,嘿嘿

noip板子

倍增法lca const int N = 500010; int n, m, s; vector<int> g[N]; void addeg(int u, int v) {g[u].push_back(v);g[v].push_back(u); }int d[N], anc[N][25]; void dfs(int u, int fa) {d[u] = d[fa] + 1;for …

东方博宜OJ 1119:求各位数字之和 ← 循环结构

​【题目来源】https://oj.czos.cn/p/1119【题目描述】输入一个正整数 N(0≤N≤2147483647),求它的各位数字之和。【输入格式】一行,一个正整数 N。【输出格式】一行,一个整数。【输入样例】189【输出样例】18【数…

2025.11.28

起床,吃饭,躺着,上网课,洗澡,买酸奶,吃饭,睡觉

10个免费查重降重工具分享,降AIGC率工具

在当前的学术环境中,确保论文的原创性和降低AI生成内容(AIGC)的检测率变得尤为重要。以下是一些能够有效降低论文AIGC率的工具,包括它们的功能、使用方法、效果以及用户评价。 SpeedAI 功能:SpeedAI专注于去除文档…

Linux_Socket_浅谈UDP - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Jetlinks 物联网平台 开源版学习源码分析

2022-06-25 Jetlinks Jetlinks 是一个非常优秀物联网基础平台, 还支持开源二次开发, 且他们的开发团队还非常友好的, 即使你使用的是开源的版本还挺愿意帮你解决问题 (当然我司也购买了企业版, 但不能分享学习笔记) 文…

多项式次数选择完整演示

多项式次数选择完整演示(Python) 本文将通过 人工生成数据→数据划分→多次数模型训练→验证集筛选最优次数→测试集评估 的全流程,演示多项式回归中如何通过验证集选择最优次数,所有代码逐行解释,兼顾理论与实践…

Java 线程池深度解析:原理、策略与生产环境调优指南

在现代 Java 应用中,线程池已成为并发处理的核心基础设施。无论是 Web 服务、定时任务、RPC 框架还是大数据处理,线程池都扮演着至关重要的角色。正确理解线程池的工作机制与调优方法,将直接影响系统的吞吐、延迟与…

Tita CRM一体化平台:破解销售管理五大痛点,实现业绩可持续增长

在数字化转型浪潮中,销售管理正成为企业高质量发展的关键瓶颈。目标执行不到位、客户资源流失、团队协同低效、项目交付延期、绩效考核失真——这些痛点的背后,是企业销售管理体系的系统性缺失。Tita CRM以”销售+交…

NOIP 算法合集

Ⅰ​.数据结构 1.树状数组 时间复杂度:\(O(n\log n)\) 优点:常数小 缺点:可以维护的内容不如线段树 应用:小常数维护前缀和或单点值 int tr[200005]; void add(int x,int y){while(x<=n)tr[x]+=y,x+=(-x)&x…

会赢吗

会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢吗会赢…

直接通过electron创建项目

直接通过electron创建项目一、创建原始electron实例demo1 1、创建项目目录demo1 2、通过命令初始化项目配置文件package.json 命令:npm init -y 项目目录下生成packabe.json文件 {"name": "demo1"…