python:分层抽样(取出0和1中70%的数值)

news/2024/10/19 2:24:44/

分层抽样是一种从总体中抽取样本的方法,它将总体划分为若干个层次,然后在每一层中分别抽取样本。分层抽样可以保证每一层中的样本数量相对均衡,从而可以提高样本的代表性。在本文中,我将介绍分层抽样的原理、优点以及应用场景,并给出一个python实现的例子。

优点

分层抽样有以下几个优点:

  • 提高样本的代表性。分层抽样可以保证每一层中的样本数量相对均衡,从而可以提高样本的代表性。

  • 减小误差。分层抽样可以使得样本与总体在各项指标上的差异较小,从而可以减小误差。

  • 可以控制抽样误差。在分层抽样中,每一层的样本数量都可以根据实际情况进行控制,从而可以控制抽样误差。

应用场景

分层抽样在实际应用中非常广泛,以下是一些常见的应用场景:

  • 调查研究。分层抽样可以用于各种类型的调查研究,比如民意调查、市场调查等。

  • 质量控制。在生产过程中,可以将产品按照不同的质量等级进行分层,然后在每一层中抽取样本进行检验。

  • 医学研究。在医学研究中,可以将患者按照疾病严重程度、年龄等指标进行分层,然后在每一层中抽取样本进行研究。

实例

下面我来演示一下如何使用分层抽样方法,从一个只包含0和1的numpy数组中抽取70%的数值作为训练样本点,剩下30%的数值作为测试样本。

import numpy as np# 生成一个包含0和1的numpy数组,长度为1000
data = np.random.randint(0, 2, size=1000)# 按照数值分层
zero_data = np.where(data == 0)[0]
one_data = np.where(data == 1)[0]# 计算每层应该抽取的样本数量
zero_sample_size = int(len(zero_data) * 0.7)
one_sample_size = int(len(one_data) * 0.7)# 在每一层中随机抽取样本
zero_sample = np.random.choice(zero_data, size=zero_sample_size, replace=False)
one_sample = np.random.choice(one_data, size=one_sample_size, replace=False)# 将两层样本合并起来
sample = np.concatenate([zero_sample, one_sample])# 从原始数据中删除抽取到的样本
data_train = np.delete(data, sample)
data_test = data[sample]# 打印训练集和测试集的统计信息
print(f"训练集:0的数量={len(np.where(data_train == 0)[0])},1的数量={len(np.where(data_train == 1)[0])}")
print(f"测试集:0的数量={len(np.where(data_test == 0)[0])},1的数量={len(np.where(data_test == 1)[0])}")

在这个例子中,我们首先生成了一个只包含0和1的长度为1000的numpy数组,然后按照数值将数据集分为两层。接着,我们计算每一层应该抽取的样本数量,然后在每一层中使用random.choice函数进行抽样,抽取比例为0.7,即每一层中抽取70%的样本。最后,我们将两层的样本合并起来,得到总体的训练集,剩下的30%的样本作为测试集。

需要注意的是,在实际应用中,分层抽样时需要考虑样本的比例、样本的分布情况以及样本的容量等因素,以保证样本的代表性和可靠性。


http://www.ppmy.cn/news/58016.html

相关文章

大事件——100篇文章帮助小白顺利进入嵌入式领域

哈喽伙伴们,最近有很多刚入门的小白找到我,让我给一些学习方向。作为一个从嵌入式领域摸爬滚打到现在的“前辈”来说,对于每个小伙伴我都想倾囊相助,但是奈何本人的精力实在有限。所以综合考虑下,决定在这里开一个专栏…

真题详解(DNS)-软件设计(六十三)

真题详解(有向图)-软件设计(六十二)https://blog.csdn.net/ke1ying/article/details/130443040 顺序存储:元素和存储空间相对位置来表示数据元素之间逻辑关系。 RFB:远程访问图形用户界面的简单协议。 在ISO/IEC9126软…

(05)基础强化:字符串拘留池,格式化,StringBuilder,垃圾回收,弱引用

一、复习 1.什么是接口?说说你对接口的理解。 (提示:概念、语法、应用场景,与抽象类的区别。说出最特别的) 接口是一种规范、标准,一种抽象的概念,所以本身无法实现&#…

关于对于springcloud中的注册中心和consume消费者和provier服务者之间的关系理解

关于对于springcloud中的注册中心和consume消费者和provier服务者之间的关系理解 pringCloud provider(服务提供方) consumer(服务调用方) server(注册中心) 运行原理 Provider 第一步 provider注册到se…

Ansible的脚本-playbook 剧本

目录 1.剧本(playbook) 1.playbook介绍 2. playbooks 的组成 3.案例:编写httpd的playbook 4.定义、引用变量 5.指定远程主机sudo切换用户 6.when条件判断 7.迭代 2.playbook的模块 1.Templates 模块 2.tags 模块 3.Roles 模块 1.…

SpringBoot定义优雅全局统一Restful API 响应框架二

这里解决之前留下来的问题,当程序没有正常返回时候 就是程序由于运行时异常导致的结果,有些异常我们可,能无法提前预知,不能正常走到我们return的R对象返回。这个时候该如何处理 在SpringBoot中,可以使用ControllerA…

ctfshow之_萌新web1至web7

一、访问在线靶场ctfshow ctf.showhttps://ctf.show/challenges如下图所示,进入_萌新赛的web1问题: 如上图所示,页面代码提示id1000时,可以查询到flag,进行如下尝试: 如下图所示,传入参数id1时…

DAY 47 Ngnix优化与防盗链

Ngnix优化主要有两种,一种是配置上的优化,一种是内核上的优化 隐藏响应头中的版本号 方法一:curl命令 网页查看 隐藏版本信息 修改nginx的运行用户和组 方法一:在编译安装时,指定运行用户和组 [root nginx-1.12.2]#…