【小白学机器学习41】如何从正态分布的总体中去抽样?比较不同的取样方差的差别

目录

1 目标:使用2种方法,去从正态分布的总体中去抽样,获得样本

1.1 step1: 首先,逻辑上需要先有符合正态分布的总体population

1.2 从总体中取得样本,模拟抽样的过程

2 从正态分布抽样的方法1

3  从正态分布抽样的方法2

4 完整代码

5 如果从总体里多次取样,用不同的方法多次取样的差别

5.1 使用np.random.choice() 从一个总体数组里多次取样

5.2  直接在循环里,每次取样一次 sp.stats.norm.rvs(loc,scale,size)

5.3  循环里生成1个sp.stats.norm,循环里每次.rvs(size)

5.4 比较3个多次循环后,多次取样的均值的均值


1 目标:使用2种方法,去从正态分布的总体中去抽样,获得样本

import numpy as np
import pandas as pd
import scipy as sp

1.1 step1: 首先,逻辑上需要先有符合正态分布的总体population

  • 都需要先生成一个 符合正态分布的 “总体population”
  • 我们设置的总体
  • 可以是无限的,或者是有限但是数量较大
  • 但是必须设置的是,总体的参数,mean=?  std=?
  • np.random.normal(loc=0, scale=1, size=1000)
  • sp.stats.norm.rvs(loc=0,scale=1,size=10)

1.2 从总体中取得样本,模拟抽样的过程

  • np.random.choice(array1,size=10,replace=False)
  • sp.stats.norm.rvs(loc=0,scale=1,size=10)

2 从正态分布抽样的方法1

  • # 先用np.random.normal一个正态分布的随机数组 ,然后再用np.random.choice()去抽样
  • array1=np.random.normal(loc=0, scale=1, size=1000)
  • array2=np.random.choice(array1,size=10,replace=False)
     

3  从正态分布抽样的方法2

  • # 直接使用sp.stats.norm.rvs() 从正态分布的总体中去生成样本,抽样
  • array3=sp.stats.norm.rvs(loc=0,scale=1,size=10)


4 完整代码

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3# 从正态分布抽样的方法1
# 先用np.random.normal一个正态分布的随机数组 ,然后再用np.random.choice()去抽样
np.random.seed(100)   #设置确定的随机种子,保证每次随机的结果都相同array1=np.random.normal(loc=0, scale=1, size=1000)
array2=np.random.choice(array1,size=10,replace=False)
print(array2)
print(np.mean(array2))
print()# 直接使用sp.stats.norm.rvs() 从正态分布的总体中去生成样本,抽样
array3=sp.stats.norm.rvs(loc=0,scale=1,size=10)
print(array3)
print(np.mean(array3))
print()

5 如果从总体里多次取样,用不同的方法多次取样的差别

5.1 使用np.random.choice() 从一个总体数组里多次取样

  • 1>---生成一个总体的正态分布,且生成数量
  • array1=sp.stats.norm.rvs(loc=0,scale=1,size=1000)
  • 2>多次取样时,每次从之前的总体里,选择一定数量作为样本
  • array2=np.random.choice(array1,size=10,replace=False)
  • 最后,多次取样的均值 mean(array2)=-0.01827
import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
#%precision 3np.random.seed(100)
count1=999
#生成一个总体的正态分布,且生成数量
array1=sp.stats.norm.rvs(loc=0,scale=1,size=1000)
#print(array1)sample_mean_array=np.zeros(count1)for i in range(0,count1,1):#每次从之前的总体里,选择一定数量作为样本array2=np.random.choice(array1,size=10,replace=False)sample_mean_array[i]=np.mean(array2)#print(sample_mean_array)
print(f"取样{count1}次的均值={np.mean(sample_mean_array)}")

5.2  直接在循环里,每次取样一次 sp.stats.norm.rvs(loc,scale,size)

  • 在循环体内部
  • 每次循环时,都取样一次
  •  array1=sp.stats.norm.rvs(loc=0,scale=1,size=10)
  • 最后,多次取样的均值 mean(array2)=-0.00136

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3np.random.seed(100)
count1=999sample_mean_array=np.zeros(count1)
for i in range(0,count1,1):#直接每次循环时生存一个新的生态分布,作为样本array1=sp.stats.norm.rvs(loc=0,scale=1,size=10)sample_mean_array[i]=np.mean(array1)#print(sample_mean_array)
print(f"取样{count1}次的均值={np.mean(sample_mean_array)}")

5.3  循环里生成1个sp.stats.norm,循环里每次.rvs(size)

  • 1>---#生成一个总体的正态分布,先不生成数量
  • population1=sp.stats.norm(loc=0,scale=1)
  • 2>---每次循环时,取1次数量,作为样本
  • array1=population1.rvs(size=10)
  • 最后,多次取样的均值 mean(array2)=-0.00136
import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3np.random.seed(100)
count1=999#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_mean_array=np.zeros(count1)for i in range(0,count1,1):#每次循环时,取1次数量,作为样本array1=population1.rvs(size=10)sample_mean_array[i]=np.mean(array1)#print(sample_mean_array)
print(f"取样{count1}次的均值={np.mean(sample_mean_array)}")

5.4 比较3个多次循环后,多次取样的均值的均值

  • 用random.choice在确定的总体里多次取样,其均值的均值 mean(array2)=-0.01827
  • 另外两种方法,多次取样的均值 mean(array2)=-0.00136
  • |-0.01827|>>|-0.00136|
  • 数量级的差别,第一种方法的均值的均值 大了第2种10倍!
  • 而总体的均值,是我们自己设计,都是0,sp.stats.norm(loc=0,scale=1)
  • 说明第一种方法最差,后两种方法差不多
  • 因此,以后注意,少用第一种方法从样本里取样!(除非总体确定了已经是固定的)

  • 原因,怀疑,第一次random.choice() 取样是在一个确定数量/数量固定的 总体population里进行取样,因此其 多次样本的均值 偏离 总体均值比较远。
  • 后两个方差,便宜总体均值不远,更合理。

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

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

相关文章

框架5:SpringBoot 2 - 核心功能

SpringBoot2 - 基础入门【一 ~ 五】,详见: 六、配置文件 6.1 properties文件格式 同之前的用法。 6.2 yaml文件格式【推荐】 YAML本意:“YAML”不是一种标记语言。但在开发中,实际把它理解为:“Yet Another Markup Lan…

行为型设计模式之《责任链模式》实践

定义 责任链模式(Chain Of Responsibility Pattern)顾名思义,就是为请求创建一条处理链路,链路上的每个处理器都判断是否可以处理请求,如果不能处理则往后走,依次从链头走到链尾,直到有处理器可…

Vue前端开发-路由树配置

一个配置路由的文件由导入路由模块、创建路由对象和导出路由对象三个部分组成,在创建路由对象时,需要构建路由数组,路由数组中包括一级、二级和多级路由结构,因此,这种结构的路由配置,又称为路由树配置。 …

2.mysql 中一条更新语句的执行流程是怎样的呢?

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。 相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又…

JavaScript根据数据生成柱形图

分析需求 // 定义一个数组来存储四个季度的数据 dataArray = []// 循环4次,获取用户输入的数据并存储到数组中 for i from 0 to 3// 获取用户输入的数据inputData = 获取用户输入的第(i + 1)季度的数据// 将数据存入数组dataArray[i] = inputData// 遍历数组,根据数据生成柱…

实验13 使用预训练resnet18实现CIFAR-10分类

1.数据预处理 首先利用函数transforms.Compose定义了一个预处理函数transform,里面定义了两种操作,一个是将图像转换为Tensor,一个是对图像进行标准化。然后利用函数torchvision.datasets.CIFAR10下载数据集,这个函数有四个常见的…

【AI系统】代数简化

代数简化 代数简化(Algebraic Reduced)是一种从数学上来指导我们优化计算图的方法。其目的是利用交换率、结合律等规律调整图中算子的执行顺序,或者删除不必要的算子,以提高图整体的计算效率。 代数化简可以通过子图替换的方式完…

多人聊天室项目 BIO模型实现

BIO模型聊天室项目大体设计 BIO编程模型 Acceptor是服务器端负责监听具体端口的Socket每有一个客户端Client连接到服务器端,Acceptor就创建一个新的线程Handler来处理客户端发送的消息每一个客户端都有一个唯一的Handler来对应处理其事务为保证线程安全&#xff0c…

腾讯云平台 - Stable Diffusion WebUI 下载模型

1)进入控制台,点击算力连接 》 JupyterLab 2)进入模型目录(双击) 3)上传模型 例如:我要上传大模型

夜神模拟器+Charles+postern+Mgisk+TrustMeAlready实现抓包

[实测有用]夜神模拟器CharlesposternMgiskTrustMeAlready实现抓包 PS:此贴仅做为技术交流,禁止非法用途。 1.初始化条件 A.安装MUMU模拟器安卓12版本 B.按图示选择,设置好代理端口8889 C.查看本机IP地址 D.导出证书,安装配置,暂时保存…

【closerAI ComfyUI】物体转移术之图案转移,Flux三重控制万物一致性生图,实现LOGO和图案的精准迁移

更多AI前沿科技资讯,请关注我们:closerAI-一个深入探索前沿人工智能与AIGC领域的资讯平台 closerAIGCcloserAI,一个深入探索前沿人工智能与AIGC领域的资讯平台,我们旨在让AIGC渗入我们的工作与生活中,让我们一起探索AIGC的无限可能性! 【closerAI ComfyUI】物体转移术之图…

新质驱动·科东软件受邀出席2024智能网联+低空经济暨第二届湾区汽车T9+N闭门会议

为推进广东省加快发展新质生产力,贯彻落实“百县千镇万村高质量发展工程”,推动韶关市新丰县智能网联新能源汽车、低空经济与数字技术的创新与发展,充分发挥湾区汽车产业链头部企业的带动作用。韶关市指导、珠三角湾区智能网联新能源汽车产业…

vue+mars3d给影像底图叠加炫酷效果

话不多说,直接上效果图: 在这里墙体其实是有一个不太明显的流动效果 实现方式:这里我使用了PolylineEntityWallPrimitive,开始我用的是polygonEntity但是发现实现效果并不好,所有直接改用了线 map.vue文件&#xff1…

【模电】常见电路参数计算

1.恒流源输出电阻 2.射极电压跟随器输出电阻 3.差分放大电路 3.1差模特性 3.1.1差模输入电阻Rid 3.1.2差模输出电阻Ro 3.1.3差模电压增益Avd 3.2共模特性 3.2.1共模输入电阻Ric 3.2.2共模电压增益Avc 4.组合放大电路 4.1单级放大器 4.1.1微变等效电路 4.1.1.1共射级 4.1.…

Linux-虚拟环境

文章目录 一. 虚拟机二. 虚拟化软件三. VMware WorkStation四. 安装CentOS操作系统五. 在VMware中导入CentOS虚拟机六. 远程连接Linux系统1. Finalshell安装2. 虚拟机网络配置3. 连接到Linux系统 七. 虚拟机快照 一. 虚拟机 借助虚拟化技术,我们可以在系统中&#…

Kafka如何保证消息可靠?

大家好,我是锋哥。今天分享关于【Kafka如何保证消息可靠?】面试题。希望对大家有帮助; Kafka如何保证消息可靠? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性,主要包…

ONVIF协议网络摄像机客户端使用gsoap获取RTSP流地址GStreamer拉流播放

什么是ONVIF协议 ONVIF(开放式网络视频接口论坛)是一个全球性的开放式行业论坛,旨在促进开发和使用基于物理IP的安全产品接口的全球开放标准。 ONVIF规范的目标是建立一个网络视频框架协议,使不同厂商生产的网络视频产品完全互通。…

javaweb_Day05

1.请求响应 1.1 概述 1.2 请求 1.2.1 请求参数 1.2.2 响应 2.分层解耦 2.1 三层架构 (1)代码分层 2.2 分层解耦 2.3 IOC&DI入门 (1)控制反转IOC (2)依赖注入DI (3)汇总 …

Stable Diffusion 3详解

🌺系列文章推荐🌺 扩散模型系列文章正在持续的更新,更新节奏如下,先更新SD模型讲解,再更新相关的微调方法文章,敬请期待!!!(本文及其之前的文章均已更新&…

[VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动

在现代Web开发中,Vue.js已经成为前端开发的热门选择之一。然而,将Vue.js项目打包并部署到生产环境可能会让一些开发者感到困惑。本文将详细介绍如何将Vue.js项目打包,并通过Tomcat服务器启动运行。 1. 准备工作 确保你的项目能够正常运行,项…