原地的回忆 发表于 2017-1-11 16:40:22

如何生成你需要的基础数据?

我们在从事数据相关的项目过程中,数据梳理、数据整合和数据补全等工作需要占用大量的时间与精力,而进展到数据分析、数据挖掘阶段也对数据的完整性有着苛刻的要求。
对于一个统计算法的验证与研究,也同样面临着根据自身业务情景特点,配置数据属性的需求。
今天,我们就简单介绍几种基础数据生产方法,以简化我们的ETL流程,方便大家根据业务定义去生产数据。
本文以面向对象的JAVA语义进行示例。小伙伴们可以按照自己熟悉的各种语言来实现,笔者秉承着逻辑方法高于开发语言选择的思想去发现问题、解决问题。


业务场景:

在医院就诊过程中,系统需要记录我们的基本信息,比如:病案号、姓名、性别、发病时间、体重等。
这些数据必须符合客观规律,并且结构化。我们接下来就逐一介绍每种属性的数据生产方法。

1、根据面向对象原则建立一个父类
首先我们建立一个抽象类AttributeValueGenerator,在这个类中声明一个实体entity,并建立get、set方法,此后的每种方法都继承这个父类。
http://121.42.45.96/data_manages/upload/image/20161228/1482909896279063858.png


2、定义病案号

病案号是一组规则的、自定义的递增数列,我们可以采用递增的方式产生。定义两个参数:病案号的起始数字、增长规模。
函数如下:
http://121.42.45.96/data_manages/upload/image/20161228/1482909915133015431.png
输入参数:

10001为病案号的起始数字、每次增加1。
http://121.42.45.96/data_manages/upload/image/20161228/1482909933316083077.png结果展示:

http://121.42.45.96/data_manages/upload/image/20161228/1482909944383018466.png


3、区分性别

我们用一组枚举型的数列填充性别属性。男性、女性的就诊比例根据业务需求自定义,采用按百分比产生随机数的方式实现。
函数如下:
http://121.42.45.96/data_manages/upload/image/20161228/1482909991397007905.png
输入参数:
第一个参数为性别、第二参数为出现的概率。
http://121.42.45.96/data_manages/upload/image/20161228/1482910009265006348.png
http://121.42.45.96/data_manages/upload/image/20161228/1482910025954045689.png
结果展示:
http://121.42.45.96/data_manages/upload/image/20161228/1482910036623092337.png


4、发病日期归并

发病日期分布在不同的年份月份日期,需要规划起始日期、截止日期、期间概率,随机生成范围内日期并转换为int型输出。
函数如下:
http://121.42.45.96/data_manages/upload/image/20161228/1482910049879092026.png
参数输入:

发病时间在2005年的占27%、在2006年的占73%
http://121.42.45.96/data_manages/upload/image/20161228/1482910063075097840.png
结果展示:
http://121.42.45.96/data_manages/upload/image/20161228/1482910073475074272.png


5、体重正态分布

一组成年人的体重数据应该根据男女区别对待,并符合正态分布的规律。正态分布数据生成,可以控制期望、方差、起始、截止。
函数如下:
http://121.42.45.96/data_manages/upload/image/20161228/1482910088404026347.png
参数输入:

如果是男性,平均值为67公斤、方差为10、40-150公斤之间浮动。
如果是女性,平均值为57公斤、方差为10、40-150公斤之间浮动。
http://121.42.45.96/data_manages/upload/image/20161228/1482910133830040191.png
结果如下:

http://121.42.45.96/data_manages/upload/image/20161228/1482910144484088699.png
汇总结果展现:

http://121.42.45.96/data_manages/upload/image/20161228/1482910154863052995.png


总结

我们可以不停地思考,随时随地的根据项目需要结合数据特点来开发一些属性的生成函数。不要小看这些细节,一旦你需要的时候就可以快速生产了。所谓:积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。你说是不是这个道理呢?作者:杨老师 (中国统计网特邀认证作者)原文链接:http://www.itongji.cn/cms/article/articledetails?articleid=4751

粉色KT猫 发表于 2017-1-12 09:18:05

:handshake
页: [1]
查看完整版本: 如何生成你需要的基础数据?