CN108460161B - 分层抽样方法、装置和计算机设备 - Google Patents
分层抽样方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN108460161B CN108460161B CN201810278458.1A CN201810278458A CN108460161B CN 108460161 B CN108460161 B CN 108460161B CN 201810278458 A CN201810278458 A CN 201810278458A CN 108460161 B CN108460161 B CN 108460161B
- Authority
- CN
- China
- Prior art keywords
- data
- sampled
- layer
- sampling
- partitions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种分层抽样方法、装置和计算机设备,上述分层抽样方法包括:将数据库中待抽样的数据存入数据表;获取待抽样的层,根据待抽样的层对所述数据表进行分区,在每个待抽样的层对应的分区中,对所述分区中的数据进行排序;获取每个待抽样的层对应的抽样比例,根据所述抽样比例从所述分区排序后的数据中抽取数据。本申请可以基于SQL实现直接分层抽样,无需另行编写数据处理脚本读取和处理数据,并且将数据源存放于同一张表中,避免了各层数据单独建表引起的数据冗余;另外,对每个待抽样的层对应的分区进行单独抽样,可以避免一次性全表扫描对资源的大量占用。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种分层抽样方法、装置和计算机设备。
背景技术
抽样,又称取样,是指从欲研究的全部样品中抽取一部分样品,来估计和推断全部样品的一种常用统计方法。抽样的基本要求是保证所抽取的样本对总体具有充分的代表性,常用的抽样方法有简单随机抽样、系统抽样、分层抽样、整群抽样等。
其中,分层抽样是指从一个可以分成不同层的总体中,按规定的比例从不同层中随机抽取样本的方法,也叫类型抽样,分层抽样可充分保证所抽取的样本对分层总体的代表性。
结构化查询语言(Structured Query Language;以下简称:SQL)是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言,SQL现有的抽样方法仅支持简单随机抽样,而分层抽样由于涉及到层的划分及每层内的随机取样,SQL中暂无直接的方法可供调用,因此SQL中的分层抽样多采用间接的方式实现。但是,当各层的用户访问记录存储在同一张表中、表内数据量较为庞大时,采用间接方法实现分层抽样的效率较低,占用资源较多,并且较为耗时耗力。
发明内容
为克服相关技术中存在的问题,本申请提供一种分层抽样方法、装置和计算机设备。
本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供一种分层抽样方法,包括:将数据库中待抽样的数据存入数据表;获取待抽样的层,根据待抽样的层对所述数据表进行分区,在每个待抽样的层对应的分区中,对所述分区中的数据进行排序;获取每个待抽样的层对应的抽样比例,根据所述抽样比例从所述分区排序后的数据中抽取数据。
上述分层抽样方法中,将数据库中待抽样的数据存入数据表之后,获取待抽样的层,根据待抽样的层对上述数据表进行分区,在每个待抽样的层对应的分区中,对上述分区中的数据进行排序,然后获取每个待抽样的层对应的抽样比例,根据上述抽样比例从上述分区排序后的数据中抽取数据,从而可以基于SQL实现直接分层抽样,无需另行编写数据处理脚本读取和处理数据,并且将数据源存放于同一张表中,避免了各层数据单独建表引起的数据冗余;另外,对每个待抽样的层对应的分区进行单独抽样,可以避免一次性全表扫描对资源的大量占用。
第二方面,本申请实施例提供一种分层抽样装置,包括:录入模块,用于将数据库中待抽样的数据存入数据表;分区模块,用于获取待抽样的层,根据待抽样的层对所述数据表进行分区;排序模块,用于在每个待抽样的层对应的分区中,对所述分区中的数据进行排序;抽样模块,用于获取每个待抽样的层对应的抽样比例,根据所述抽样比例从所述分区排序后的数据中抽取数据。
上述分层抽样装置中,录入模块将数据库中待抽样的数据存入数据表之后,分区模块获取待抽样的层,根据待抽样的层对上述数据表进行分区,排序模块在每个待抽样的层对应的分区中,对上述分区中的数据进行排序,然后抽样模块获取每个待抽样的层对应的抽样比例,根据上述抽样比例从上述分区排序后的数据中抽取数据,从而可以基于SQL实现直接分层抽样,无需另行编写数据处理脚本读取和处理数据,并且将数据源存放于同一张表中,避免了各层数据单独建表引起的数据冗余;另外,对每个待抽样的层对应的分区进行单独抽样,可以避免一次性全表扫描对资源的大量占用。
第三方面,本申请实施例提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的方法。
第四方面,本申请实施例提供一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如上所述的方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请分层抽样方法一个实施例的流程图;
图2为本申请分层抽样方法中建立数据表一个实施例的示意图;
图3为本申请分层抽样方法另一个实施例的流程图;
图4为本申请分层抽样方法再一个实施例的流程图;
图5为本申请分层抽样方法中分层抽样伪代码一个实施例的示意图;
图6为本申请分层抽样方法中分层抽样结果一个实施例的示意图;
图7为本申请分层抽样方法再一个实施例的示意图;
图8为本申请分层抽样方法中抽取每个待抽样的层中排名前k%的样本的伪代码示意图;
图9为本申请分层抽样方法中抽取前n条数据的伪代码示意图;
图10为本申请分层抽样装置一个实施例的结构示意图;
图11为本申请分层抽样装置另一个实施例的结构示意图;
图12为本申请计算机设备一个实施例的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1为本申请分层抽样方法一个实施例的流程图,如图1所示,上述分层抽样方法可以包括:
步骤101,将数据库中待抽样的数据存入数据表。
参见图2,图2为本申请分层抽样方法中建立数据表一个实施例的示意图,本实施例中,在将数据库中待抽样的数据存入数据表时,对上述待抽样的数据所属的每个层赋予唯一的层标识(Identifier;以下简称:ID),并且数据表内的数据非随机录入。
步骤102,获取待抽样的层,根据待抽样的层对上述数据表进行分区。
具体地,可以根据用户输入的待抽样的层名获取待抽样的层,然后根据待抽样的层对上述数据表进行分区。
在具体实现时,数据表中的每条数据都有自己所属的层,因此在对数据表进行分区时,可以将属于同一待抽样的层的数据划分到一个分区中。
步骤103,在每个待抽样的层对应的分区中,对上述分区中的数据进行排序。
步骤104,获取每个待抽样的层对应的抽样比例。
具体地,可以获取用户输入的每个待抽样的层对应的抽样比例。本实施例中,每个待抽样的层对应的抽样比例,可以相同,也可以不同,本实施例对此不作限定,只要按照上述抽样比例最终抽取的样本数满足预先设定的需求即可。
步骤105,根据上述抽样比例从上述分区排序后的数据中抽取数据。
上述分层抽样方法中,将数据库中待抽样的数据存入数据表之后,获取待抽样的层,根据待抽样的层对上述数据表进行分区,在每个待抽样的层对应的分区中,对上述分区中的数据进行排序,然后获取每个待抽样的层对应的抽样比例,根据上述抽样比例从上述分区排序后的数据中抽取数据,从而可以基于SQL实现直接分层抽样,无需另行编写数据处理脚本读取和处理数据,并且将数据源存放于同一张表中,避免了各层数据单独建表引起的数据冗余;另外,对每个待抽样的层对应的分区进行单独抽样,可以避免一次性全表扫描对资源的大量占用。
图3为本申请分层抽样方法另一个实施例的流程图,如图3所示,本申请图1所示实施例中,步骤101之后,还包括:
步骤301,对上述数据表中的每条数据赋予随机ID。
这时,步骤103可以为:
步骤302,在每个待抽样的层对应的分区中,根据上述随机ID对上述分区中的数据进行排序。
也就是说,本实施例中,在将数据库中待抽样的数据存入数据表之后,可以对数据表中的每条数据赋予随机ID,然后,在对每个待抽样的层对应的分区中的数据进行排序时,可以按照随机ID由大至小或由小至大的顺序对每个待抽样的层对应的分区中的数据进行排序,从而可以实现在每个待抽样的层对应的分区中对数据进行随机排序。
图4为本申请分层抽样方法再一个实施例的流程图,如图4所示,本申请图1所示实施例中,步骤105可以包括:
步骤401,获取每个待抽样的层所包括的样本数。
步骤402,根据上述抽样比例和上述样本数,获取每个待抽样的层所需抽取的样本数。
步骤403,根据每个待抽样的层所需抽取的样本数,从上述分区排序后的数据中抽取数据。
由于分层抽样要求所抽取的样本在各层中按比例分布,因此各层中需抽取的个体数将有所不同。本实施例中,先计算每个待抽样的层所包含的个体总数,随后根据抽样比例确定从每个待抽样的层中应该抽取的个体数,然后根据每个待抽样的层所需抽取的样本数,从上述分区排序后的数据中抽取数据。
具体地,在从上述分区排序后的数据中抽取数据时,可以采用前n项法,首先可以对每个待抽样的层对应的分区内的各条数据赋予一个顺序ID(该顺序ID在不同的分区中会重新开始编号),随后根据每个待抽样的层所需抽取的样本数,在每个分区排序后的数据中抽取顺序ID介于1和所需样本数之间的数据,汇总后即为分层抽样结果。
举例来说,待抽样的数据所存入的数据表包含m个层,每层包含xm个样本点(m、xm∈Z+),现需要从上述数据表中按分层抽样的方法,随机抽取60%的样本,采用的伪代码可以如图5所示,图5为本申请分层抽样方法中分层抽样伪代码一个实施例的示意图。
图5所示的伪代码中,stratified_sampling即为本申请实施例提出的分层抽样方法的封装形式。在调用时,用户在设置好数据库连接和结果返回位置后,直接调用stratified_sampling方法,传入数据表的表名、待抽样的层名和抽样比例(%)三个参数(必要时修改where子句),即可一次性完成对单表数据的分层抽样。
当多次执行该方法时,每一次将返回一个不同的抽样结果,图6为对真实数据表按照本申请实施例提出的分层抽样方法,重复执行3次所返回的不同结果示例(每层抽取5个样本),图6为本申请分层抽样方法中分层抽样结果一个实施例的示意图。
图7为本申请分层抽样方法再一个实施例的示意图,如图7所示,本申请图1所示实施例中,步骤103可以包括:
步骤701,在每个待抽样的层对应的分区中,按照上述数据的值(Value),对上述分区中的数据进行排序。
这时,步骤105可以为:
步骤702,根据上述抽样比例,从上述分区排序后的数据中顺序抽取数据。
具体地,本实施例中,在每个待抽样的层对应的分区中,还可以按照数据的值由大至小,或者由小至大的顺序进行排序,然后在抽样时,可以按照每个待抽样的层对应的抽样比例,从上述分区排序后的数据中顺序抽取数据,从而实现抽取每个待抽样的层中排名前(或后)k%的样本,其中上述k%为抽样比例。
仍以待抽样的数据所存入的数据表包含m个层,每层包含xm个样本点(m、xm∈Z+)为例,抽取每个待抽样的层中排名前k%的样本的伪代码可以如图8所示,图8为本申请分层抽样方法中抽取每个待抽样的层中排名前k%的样本的伪代码示意图。
当然,按照上述数据的值(Value),对上述分区中的数据进行排序之后,也可以按照本申请图4所示实施例提供的方法,先获取每个待抽样的层所需抽取的样本数n,然后根据每个待抽样的层所需抽取的样本数n,在每个分区,按照数据的值排序后的数据中,抽取前(或后)n条数据。
以待抽样的数据所存入的数据表包含m个层,每层包含xm个样本点(m、xm∈Z+)为例,在每个分区,按照数据的值排序后的数据中,抽取前n条数据的伪代码可以如图9所示,图9为本申请分层抽样方法中抽取前n条数据的伪代码示意图。
本申请实施例提供的分层抽样方法,基于SQL语言实现单表分层数据的抽样,在数据源的存储上,无需对每一个分层数据单独建表,所有数据可存储在一张数据表中(各层数据通过唯一层ID进行区分),简化了数据存储方式,避免了数据冗余,尤其对于层数较多、一条记录同时属于多个层时的情形;在资源占用上,本申请实施例首先对数据表按照层进行分区,再进行乱序排列,每次排列仅在各个层对应的分区中进行,避免了全表排序对系统资源的大量占用;在人力成本上,本申请实施例完全基于SQL语言实现,可封装在python、php等其他语言环境中直接调用,所有参数均可实现外生化,可有效节约开发人员的人力成本。
图10为本申请分层抽样装置一个实施例的结构示意图,本申请实施例中的分层抽样装置可以实现本申请实施例提供的分层抽样方法。如图10所示,上述分层抽样装置可以包括:录入模块1001、分区模块1002、排序模块1003和抽样模块1004;
其中,录入模块1001,用于将数据库中待抽样的数据存入数据表;参见图2,本实施例中,在录入模块1001将数据库中待抽样的数据存入数据表时,可以对上述待抽样的数据所属的每个层赋予唯一的层ID,并且数据表内的数据非随机录入。
分区模块1002,用于获取待抽样的层,根据待抽样的层对上述数据表进行分区;具体地,分区模块1002可以根据用户输入的待抽样的层名获取待抽样的层,然后根据待抽样的层对上述数据表进行分区。
在具体实现时,数据表中的每条数据都有自己所属的层,因此在对数据表进行分区时,分区模块1002可以将属于同一待抽样的层的数据划分到一个分区中。
排序模块1003,用于在每个待抽样的层对应的分区中,对上述分区中的数据进行排序;
抽样模块1004,用于获取每个待抽样的层对应的抽样比例,根据上述抽样比例从上述分区排序后的数据中抽取数据。
具体地,抽样模块1004可以获取用户输入的每个待抽样的层对应的抽样比例。本实施例中,每个待抽样的层对应的抽样比例,可以相同,也可以不同,本实施例对此不作限定,只要按照上述抽样比例最终抽取的样本数满足预先设定的需求即可。
上述分层抽样装置中,录入模块1001将数据库中待抽样的数据存入数据表之后,分区模块1002获取待抽样的层,根据待抽样的层对上述数据表进行分区,排序模块1003在每个待抽样的层对应的分区中,对上述分区中的数据进行排序,然后抽样模块1004获取每个待抽样的层对应的抽样比例,根据上述抽样比例从上述分区排序后的数据中抽取数据,从而可以基于SQL实现直接分层抽样,无需另行编写数据处理脚本读取和处理数据,并且将数据源存放于同一张表中,避免了各层数据单独建表引起的数据冗余;另外,对每个待抽样的层对应的分区进行单独抽样,可以避免一次性全表扫描对资源的大量占用。
图11为本申请分层抽样装置另一个实施例的结构示意图,与图10所示的分层抽样装置相比,不同之处在于,图11所示的分层抽样装置还可以包括:设置模块1005;
设置模块1005,用于在将数据库中待抽样的数据存入数据表之后,对上述数据表中的每条数据赋予随机标识;
排序模块1003,具体用于在每个待抽样的层对应的分区中,根据上述随机标识对上述分区中的数据进行排序。
也就是说,本实施例中,在录入模块1001将数据库中待抽样的数据存入数据表之后,设置模块1005可以对数据表中的每条数据赋予随机ID,然后,排序模块1003在对每个待抽样的层对应的分区中的数据进行排序时,可以按照随机ID由大至小或由小至大的顺序对每个待抽样的层对应的分区中的数据进行排序,从而可以实现在每个待抽样的层对应的分区中对数据进行随机排序。
本实施例中,抽样模块1004,具体用于获取每个待抽样的层所包括的样本数,根据上述抽样比例和上述样本数,获取每个待抽样的层所需抽取的样本数,根据每个待抽样的层所需抽取的样本数,从上述分区排序后的数据中抽取数据。
由于分层抽样要求所抽取的样本在各层中按比例分布,因此各层中需抽取的个体数将有所不同。本实施例中,抽样模块1004先计算每个待抽样的层所包含的个体总数,随后根据抽样比例确定从每个待抽样的层中应该抽取的个体数,然后抽样模块1004根据每个待抽样的层所需抽取的样本数,从上述分区排序后的数据中抽取数据。
具体地,在抽样模块1004从上述分区排序后的数据中抽取数据时,可以采用前n项法,首先可以对每个待抽样的层对应的分区内的各条数据赋予一个顺序ID(该顺序ID在不同的分区中会重新开始编号),随后根据每个待抽样的层所需抽取的样本数,在每个分区排序后的数据中抽取顺序ID介于1和所需样本数之间的数据,汇总后即为分层抽样结果。
举例来说,待抽样的数据所存入的数据表包含m个层,每层包含xm个样本点(m、xm∈Z+),现需要从上述数据表中按分层抽样的方法,随机抽取60%的样本,采用的伪代码可以如图5所示。
图5所示的伪代码中,stratified_sampling即为本申请实施例提出的分层抽样方法的封装形式。在调用时,用户在设置好数据库连接和结果返回位置后,直接调用stratified_sampling方法,传入数据表的表名、待抽样的层名和抽样比例(%)三个参数(必要时修改where子句),即可一次性完成对单表数据的分层抽样。
当多次执行该方法时,每一次将返回一个不同的抽样结果,图6为对真实数据表按照本申请实施例提出的分层抽样方法,重复执行3次所返回的不同结果示例(每层抽取5个样本)。
本实施例中,排序模块1003,具体用于按照上述数据的值(Value),对上述分区中的数据进行排序。
这时,抽样模块1004,具体用于根据上述抽样比例,从上述分区排序后的数据中顺序抽取数据。
具体地,本实施例中,在每个待抽样的层对应的分区中,还可以按照数据的值由大至小,或者由小至大的顺序进行排序,然后抽样模块1004在抽样时,可以按照每个待抽样的层对应的抽样比例,从上述分区排序后的数据中顺序抽取数据,从而实现抽取每个待抽样的层中排名前(或后)k%的样本,其中上述k%为抽样比例。
仍以待抽样的数据所存入的数据表包含m个层,每层包含xm个样本点(m、xm∈Z+)为例,抽样模块1004抽取每个待抽样的层中排名前k%的样本的伪代码可以如图8所示。
当然,按照上述数据的值(Value),对上述分区中的数据进行排序之后,抽样模块1004也可以先获取每个待抽样的层所需抽取的样本数n,然后根据每个待抽样的层所需抽取的样本数n,在每个分区,按照数据的值排序后的数据中,抽取前(或后)n条数据。
以待抽样的数据所存入的数据表包含m个层,每层包含xm个样本点(m、xm∈Z+)为例,在每个分区,按照数据的值排序后的数据中,抽取前n条数据的伪代码可以如图9所示。
本申请实施例提供的分层抽样装置,基于SQL语言实现单表分层数据的抽样,在数据源的存储上,无需对每一个分层数据单独建表,所有数据可存储在一张数据表中(各层数据通过唯一层ID进行区分),简化了数据存储方式,避免了数据冗余,尤其对于层数较多、一条记录同时属于多个层时的情形;在资源占用上,本申请实施例首先对数据表按照层进行分区,再进行乱序排列,每次排列仅在各个层对应的分区中进行,避免了全表排序对系统资源的大量占用;在人力成本上,本申请实施例完全基于SQL语言实现,可封装在python、php等其他语言环境中直接调用,所有参数均可实现外生化,可有效节约开发人员的人力成本。
图12为本申请计算机设备一个实施例的结构示意图,本实施例中的计算机设备可以包括存储器、处理器及存储在上述存储器上并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时,可以实现本申请实施例提供的分层抽样方法。
其中,上述计算机设备可以为服务器,例如:云端服务器;也可以为智能手机、平板电脑或智能手表等智能终端设备,本实施例对上述计算机设备的形态不作限定。
图12示出了适于用来实现本申请实施方式的示例性计算机设备12的框图。图12显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图12所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图12未显示,通常称为“硬盘驱动器”)。尽管图12中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc ReadOnly Memory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图12所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图12中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例提供的分层抽样方法。
本申请实施例还提供一种非临时性计算机可读存储介质,当上述存储介质中的计算机可执行指令在由计算机处理器执行时,用于执行本申请实施例提供的分层抽样方法。
上述非临时性计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(Read Only Memory;以下简称:ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory;以下简称:EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network;以下简称:LAN)或广域网(Wide Area Network;以下简称:WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本申请实施例还提供一种计算机程序产品,当上述计算机程序产品中的指令由处理器执行时,执行本申请实施例提供的分层抽样方法。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array;以下简称:PGA),现场可编程门阵列(Field ProgrammableGate Array;以下简称:FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (4)
1.一种分层抽样方法,其特征在于,包括:
将数据库中待抽样的数据存入同一张数据表,并对所述待抽样的数据所属的每个层赋予层标识,其中,每一所述待抽样的数据属于一个层或多个层;
对所述数据表中的每条数据赋予随机标识;获取用户输入的数据表的表名、待抽样的层名和抽样比例;根据所述用户输入的待抽样的层名获取待抽样的层,根据待抽样的层与所述待抽样数据对应的层标识对所述用户输入的数据表的表名对应的所述数据表进行分区,以将所述数据表中属于同一待抽样的层的数据划分到一个分区中,在每个待抽样的层对应的分区中,根据所述随机标识或者按照所述数据的值对所述分区中的数据进行排序;
根据所述用户输入的抽样比例获取每个待抽样的层对应的抽样比例;
若根据所述随机标识对所述分区中的数据进行排序,则获取每个待抽样的层所包括的样本数,根据所述抽样比例和所述样本数,获取每个待抽样的层所需抽取的样本数,对每个待抽样的层对应的分区内排序后的各条数据赋予一个顺序ID,其中所述顺序ID在不同的分区中重新开始编号,从每个待抽样的层对应的所述分区排序后的数据中抽取所述顺序ID介于1和所述每个待抽样的层所需抽取的样本数之间的数据,汇总后得到分层抽样结果;或者
若按照所述数据的值对所述分区中的数据进行排序,则从每个待抽样的层对应的所述分区排序后的数据中顺序抽取每个待抽样的层中排名前或后k%的数据,其中所述k%为所述每个待抽样的层对应的抽样比例;
其中,对每个待抽样的层对应的分区进行单独抽样;
其中,每次重复执行抽样时对所述分区中的数据重新进行排序,使得当重复多次执行抽样时,每一次返回一个不同的抽样结果。
2.一种分层抽样装置,其特征在于,包括:
录入模块,用于将数据库中待抽样的数据存入同一张数据表,并对所述待抽样的数据所属的每个层赋予层标识,其中,每一所述待抽样的数据属于一个层或多个层;
设置模块,用于对所述数据表中的每条数据赋予随机标识;
分区模块,用于获取用户输入的数据表的表名、待抽样的层名和抽样比例,并根据所述用户输入的待抽样的层名获取待抽样的层,根据待抽样的层与所述待抽样数据对应的层标识对所述用户输入的数据表的表名对应的所述数据表进行分区,以将所述数据表中属于同一待抽样的层的数据划分到一个分区中;
排序模块,用于在每个待抽样的层对应的分区中,根据所述随机标识或者按照所述数据的值对所述分区中的数据进行排序;
抽样模块,用于根据所述用户输入的抽样比例获取每个待抽样的层对应的抽样比例,若根据所述随机标识对所述分区中的数据进行排序,则获取每个待抽样的层所包括的样本数,根据所述抽样比例和所述样本数,获取每个待抽样的层所需抽取的样本数,对每个待抽样的层对应的分区内排序后的各条数据赋予一个顺序ID,其中所述顺序ID在不同的分区中重新开始编号,从每个待抽样的层对应的所述分区排序后的数据中抽取所述顺序ID介于1和所述每个待抽样的层所需抽取的样本数之间的数据,汇总后得到分层抽样结果;或者若按照所述数据的值对所述分区中的数据进行排序,则从每个待抽样的层对应的所述分区排序后的数据中顺序抽取每个待抽样的层中排名前或后k%的数据,其中所述k%为所述每个待抽样的层对应的抽样比例;
其中,对每个待抽样的层对应的分区进行单独抽样;
其中,每次重复执行抽样时对所述分区中的数据重新进行排序,使得当重复多次执行抽样时,每一次返回一个不同的抽样结果。
3.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1所述的方法。
4.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810278458.1A CN108460161B (zh) | 2018-03-30 | 2018-03-30 | 分层抽样方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810278458.1A CN108460161B (zh) | 2018-03-30 | 2018-03-30 | 分层抽样方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108460161A CN108460161A (zh) | 2018-08-28 |
CN108460161B true CN108460161B (zh) | 2021-11-19 |
Family
ID=63237864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810278458.1A Active CN108460161B (zh) | 2018-03-30 | 2018-03-30 | 分层抽样方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108460161B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515980A (zh) * | 2019-07-17 | 2019-11-29 | 金蝶软件(中国)有限公司 | 抽检方法、装置、计算机设备和存储介质 |
CN111382952B (zh) * | 2020-03-23 | 2022-06-28 | 福建省特种设备检验研究院 | 一种基于全面覆盖原则的电梯质量检查抽取方法 |
CN111581197B (zh) * | 2020-04-30 | 2023-06-13 | 中国工商银行股份有限公司 | 对数据集中的数据表进行抽样和校验的方法及装置 |
CN112800147A (zh) * | 2021-02-02 | 2021-05-14 | 北京明略昭辉科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113065031A (zh) * | 2021-03-17 | 2021-07-02 | 上海数喆数据科技有限公司 | 一种用于社会调查的复杂抽样方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102175209B (zh) * | 2010-12-07 | 2013-01-23 | 北京师范大学 | 历史遥感产品数据支持下的作物种植面积测量高效抽样方法 |
CN102147893A (zh) * | 2011-04-20 | 2011-08-10 | 重庆市电力公司綦南供电局 | 用于it系统应用考评拓展平台的数据分层抽样方法 |
US8903807B2 (en) * | 2012-07-17 | 2014-12-02 | Oracle International Corporation | Validating database table partitioning schemes using stratified random sampling |
CN103200046B (zh) * | 2013-03-28 | 2016-01-20 | 青岛海信传媒网络技术有限公司 | 监控网元设备性能的方法及系统 |
CN105335407A (zh) * | 2014-07-29 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种数据自动化测试方法及装置 |
CN106372233B (zh) * | 2016-09-09 | 2019-09-20 | 北京奇虎科技有限公司 | 数据集合存储方法及装置 |
CN107122395B (zh) * | 2017-03-10 | 2021-02-26 | 博彦科技股份有限公司 | 数据抽样方法和装置 |
CN107704436A (zh) * | 2017-10-30 | 2018-02-16 | 平安科技(深圳)有限公司 | 数据抽样方法、终端、设备以及计算机可读存储介质 |
-
2018
- 2018-03-30 CN CN201810278458.1A patent/CN108460161B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108460161A (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108460161B (zh) | 分层抽样方法、装置和计算机设备 | |
CN107807982B (zh) | 一种异构数据库的一致性校验方法及装置 | |
CN108509556B (zh) | 数据迁移方法和装置、服务器、存储介质 | |
CN111506498A (zh) | 测试用例的自动生成方法、装置、计算机设备及存储介质 | |
CN112115113B (zh) | 数据存储系统、方法、装置、设备以及存储介质 | |
CN108628885B (zh) | 一种数据同步方法、装置及存储设备 | |
CN111897740A (zh) | 用户界面的测试方法、装置、电子设备及计算机可读介质 | |
CN112615758B (zh) | 一种应用识别方法、装置、设备及存储介质 | |
US11429317B2 (en) | Method, apparatus and computer program product for storing data | |
CN116244387A (zh) | 实体关系构建方法、装置、电子设备及存储介质 | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN113094415B (zh) | 数据抽取方法、装置、计算机可读介质及电子设备 | |
CN111597112B (zh) | 自动测试方法、装置及电子设备 | |
CN109684207B (zh) | 操作序列封装的方法、装置、电子设备及存储介质 | |
US20190340179A1 (en) | Result set output criteria | |
CN115022201B (zh) | 一种数据处理功能测试方法、装置、设备及存储介质 | |
CN112346952A (zh) | 用于测试用例的回归测试的方法、设备和电子设备 | |
CN111309583B (zh) | 界面过度绘制检测方法、装置、介质及计算设备 | |
CN109948251B (zh) | 基于cad的数据处理方法、装置、设备及存储介质 | |
CN108984426B (zh) | 用于处理数据的方法和装置 | |
CN109901983B (zh) | 自动化测试方法及装置、存储介质、电子设备 | |
CN111782834A (zh) | 图像检索的方法、装置、设备及计算机可读存储介质 | |
CN112115134A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN111625615A (zh) | 文字提取与处理 | |
CN110134691B (zh) | 数据校验方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |