关于Pima数据集研究(2)--DC(数据清洗)篇

关于Pima数据集研究共分为4个篇幅来进行研究:

《关于Pima数据集研究(1)--EDA(探索性数据分析)篇》

《关于Pima数据集研究(2)--DC(数据清洗)篇》

《关于Pima数据集研究(3)--FE(特征工程)篇》

《关于Pima数据集研究(4)--Model(模型搭建与预测)篇》

一、前情提要

    该数据集最初来自美国国立糖尿病与消化与肾脏疾病研究所。数据集的目的是基于数据集中包含的某些诊断指标,诊断性的预测患者是否患有糖尿病。从较大的数据库中选择这些实例受到一些限制。特别是,这里的所有患者均为皮马印第安人血统至少21岁的女性。


二、内容

    本次主要承接之前的《关于Pima数据集研究(上)--EDA篇》做后续探索研究,主要内容是关于Pima数据的EDA结果进行针对性的数据清洗与深入探索。


三、研究方法

    本人是python系,本课题的研究方法与方案均是基于python进行扩展,研究工具包括Anaconda、panda、numpy、sklearn等第三方成熟开源框架。


四、数据清洗(DC)

    根据之前的EDA结果发现,数据集中的数据存在部分问题。如果我们直接将本结果带入到后续的统计分析或模型搭建中,势必会得出不可置信结果。因此需要通过数据清洗方法将数据进行处理,我们先来回顾一下字段中0值的数量:

字段值为0的统计数

    接下来我们根据之前的EDA结果开始进行数据清洗工作。


    Pregnancies(怀孕次数),根据EDA结果,范围应该为0~13。因此将>13的结果进行指标拉回处理,亦将>13的数据赋值为13。下图为该字段清洗前后的分布差异;

数据修正前后差异图

    Glucose(葡萄糖含量),根据EDA结果,其中有5条样本为0(异常值),上限值未发现异常。因此将5条数据修正为IQR下限值37.125,考虑到数据形态分布,此处采取中位数替换形式进行修正,修正前后结果如下:

数据修正前后对比

    接下来我们观察以下该数据的分布情况,如下图所示:

Glucose数据处理前后分布

    BMI(体重指数),根据EDA结果,数据为0的异常样本共11条,上限值暂未发现异常,因此将异常数据通过数据中位数的值进行填充。结果如下表所示:

数据修正前后对比

  接下来我们观察以下该数据的分布情况,如下图所示:

BMI修复前后分布图

    接下开始修正问题数据占比较高的特征。这里我们尝试使用回归分析来进行数据填补('·'谁让我爱折腾呢'·'),不废话,直接上结果。

     BloodPressure(血压),根据EDA结果,存在35条样本的0值。此处采用与之前不同的处理方法来对数据进行处理(回归预测添补法)。这里采用的是LightGBM进行回归预测,先通过数据集切分和特征提取,结果如下图:

BloodPressure预测特征

    在此说明一下为什么只选择了者5个特征:    

1、这5个特征是经过之前的EDA和数据清洗后可用的数据;

2、Outcome为我们的最终预测目标,如果加入进行预测BloodPressure可能会影响到最终的预测结果;

3、除上图5个特征以外的特征还未进行数据清洗,可能会影响到最终的结果;


    接下来简单介绍一下数据预处理与回归预测的方法:

1、选择建模使用特征;

2、通过数据标准化处理数据,将数据拉到相同维度;

3、通过网格搜索进行简单超参选择;

4、搭建回归模型;

5、计算数据误差;

6、通过模型预测结果;

以下为模型计算的RMSE指标:

The rmse of prediction is: 10.460150358058625

    模型预测结果展示:

BloodPressure预测填补结果
BloodPressure修复前后效果对比图

    通过BloodPressure修正分布图来看,发现修正后数据整体分布更加接近正态分布,且将异常数据进行了修正。


     SkinThickness(皮下脂肪厚度,单位mm),根据EDA结果,存在227条样本的0值,占整体近30%的数据。再此

The rmse of prediction is: 4.6980404261770

    此处采用上述相同方法进行预测填补,操作流程和步骤与上一步相同,此处不再废话,直接上结果:

SkinThickness预测填补结果 

    看到上面诡异的预测结果发现数据预测有问题,检查预测之后整体的数据分布,如下图:

预测数据修正前后分布

    通过上图发现,预测填补的数据造成了数据的双峰分布,且主要分布在30的位置。而87的第二波峰由于预测结果导致的。由此发现,虽然模型计算出来的rmse评估相对较低,但是最终填补模型时导致数据形态变化较大。因此放弃预测填补方法,而是采用去0后的中位数进行填补,结果如下:

SkinThickness修正前后对比结果表
中位数修正前后对比结果图

    通过中位数对SkinThickness进行修正后对比其他结果有相对较好的正态分布效果,但由于值的占比过大,因此呈现出较高峰值,因此此方法对数据处理的效果仍然不是太理想,此时我们需要通过其他方式尝试对异常数据填补;

    考虑再三,此时考虑引入之前均未尝试过的方法,也就是随机插补法对数据进行修复。顾名思义,也就是通过从非0数据中随机抽取数据对目标数据进行修复;接下来我们观察一下该方法的数据分为数统计结果,如下表:

SkinThickness非0数据分为数统计

    经过上述统计结果我们发现了一个较为诡异的数据,也就是该特征的max(最大值),之前在进行EDA的时候并未发现该数据异常。但从数据来看,99%的数据值才到53.2,与最大值差距较大。因此需要进行进一步IQR检验来判断改值是不是超出了正常范围内。结果进行计算发现IQR的上限值只有57而已,果然存在部分数据远远超出了IQR范围,此时为了后续数据的分布有效性,在此将该部分数据也同样进行处理;效果如何,如下图所示:

随机插补法修复前后分布效果图

    通过上图我们不难发现,该方法相比于中位数和预测填补法的效果都要好得多,且几乎呈现出正态分布的样式。


    Insulin(餐后2小时血清胰岛素含量),根据EDA结果,存在374条样本的0值,占整体近一半的数据。我们先来尝试使用回归预测的方式进行数据填补,结果如下:

The rmse of prediction is: 90.29597227916564

    根据模型计算得到的rmse来看,效果很不理想,因此此处放弃使用模型预测。此处根据EDA的结果发现,需要进行填补修复的数据较多,若采用之前的中位数填补势必会影响到整体的数据分布,效果如下图所示:

采用中位数填补数据效果对比

    通过上图发现,采用中位数对异常数据进行填补后,会造成整体数据的波峰异常高,且出现部分锯齿状数据,这样对整体数据效果会有影响,我们先来观察一下Insulin特征含0和非含0的数据分布情况,如下图:

Insulin含0(蓝)和不含0的数据分布

    经过上图观察发现,由于0占比较多,已经将整体的数据样本分布拉偏,因此需要进行数据的调整优化;

    由于需要修补的数据较多,因此采用之前的思路,随机插补法来对数据进行修复;只不过这里我们进行一点方法的改进,运用定向随机插补发,也就是在一定范围内选择随机数进行填补。直接上我做的步骤:

1、计算非0数据的1/4和3/4分为数;

2、每个值采用有放回抽样的方式,从分为数范围内进行数据随机抽取;

3、将抽取到的数据进行数据替换;

    下图为Insulin非0数据的数据分布:

Insulin非0数据统计 

    通过上述方法进行数据抽样,我们先生从目标范围内抽取一批与需要替换数量相同的数据列表,结果如下:

抽样结果样例

    我们将抽样得到的结果对目标数据进行替换,下图为替换为的数据分布:

定向随机抽样法修正前后数据分布

    经过上述定向随机抽样法修复数据后我们发现,整体数据分布更加接近正态分布,修复方法已对检测出的异常方法有较好的效果。但其中存在大部分的长尾数据,因此还需要后续通过特征工程的方法对数据进行处理。


五、总结

    到此为止,我们已经完成了数据清洗的工作。通过下表回顾一下在该数据集中我们都用了哪些数据清洗方法:

特征数据清洗方法说明表

    从整体来看,数据清洗建立在我们之前的EDA基础上,且需要尝试不同方法对数据进行清洗,这样才能够获得相对较高质量的数据;

六、后续

    EDA我们差不多到这里,接下来我们根据EDA结果进行各个特征的DC(数据清洗),可以关注后续的《关于Pima数据集研究(中)--DC(数据清洗)篇》。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349