数据挖掘之缺失数据缺失的各种插补算法比较

0前言

代码请访问github的个人储存库里下载,喜欢的给个Star喔。

实验要求:完成插补实验
实验工具: 1、excel表格
2、记事本txt文件
3.、pycharm
4、JBPCAfill.jar包

1前期处理

1.2删除特殊字符

表格中含有None,#NULL!的字符,表示数据缺失,在表格统计数据个数时,字符None,#NULL!影响统计的数量,所以这些字符需要删除。代码在first包里的Prepare.py里。
思路:两个for循环对行和列进行扫描,遇到None或#NULL!字符,对其赋空值。

2.EM算法插值

2.1 步骤

1、下载ycimpute库,里面含有EM算法的插值函数
2、插入’index’字段名,目的是后期为筛选出非空的数据进行文字转数字,最后根据index值还原顺序
2、地址和手机号码都是文本类型,而EM算法的插值函数要求特征值全部为数字类型,于是将文本标签转为数字
4、选定特征值,
5、使用ycimpute库里的EM()函数插值
6、将数字类型的地址和手机号转成文本标签
步骤思路图
在这里插入图片描述

2.2 备注

代码操作如first包里的em.py所示,并且调用了toencoding.py代码

3 多重插值

代码操作如first包里mice.py所示,直接调用ycimpute库里的MICE函数,代码操作思路与EM算法操作相似,只需将from ycimpute.imputer import EM 改from ycimpute.imputer.mice import MICE,调用MICE函数里的插补函数即可。

4.比较EM算法、PPCA算法、BPCA算法的插值误差

4.1前期测试集的选取

1、将txt文件转成csv表格,代码如two包里的txttocsv所示
2、观察表格中各个属性的特点,车牌号是单一的,而其他因素都会影响着车的速度,对于时间的处理,我选择了取间隔时间,当前时间与下一个的时间间隔代码在two包的Diff.py里。
3、测试集的代码位于two包里的share.py里, 此测试集代码可以保证每次运行都得到相同的测试集,找到测试集的下标并保存。并将其速度赋值为空。将测试集和训练集全部存入另一张表格。
4、对trafficflow21.csv里的特征值进行标准化处理

4.2. bpca算法的操作

4.2.1.前期处理

对于ppca算法,python2有直接安装的包,python3安装则会出错,于是我将ppca插值算法的包里函数直接复制粘贴到ppca.py里。对ppca插值算法的操作代码在two包的ppcamake.py里。分离出训练的特征值,进行标准化处理,对空值全部赋999操作,如two包的bpcapre.py所示,然后将转成txt文件。

4.2.2.操作步骤

BPCA的jar包下载了JBPCAfill.jar,此包由Shigeyuki Oba所编写,此jar包作用是采用bpca算法对缺失的数据进行插补。此jar包的使用方法如图从网站截图而来。
在这里插入图片描述
在这里插入图片r包操作图描述
将trafficflow23_filled.txt转成csv格式。

4.3.PPCA算法插值

1.python2可直接导入下载的PPCA插值的代码库,python3导入出错,于是将将ppca包里的函数复制粘贴至two包的ppca.py里,ppcamake.py是调用ppca插值算法里的函数。

4.4.EM算法插值

调用ycimpute里的EM模块即可。将测试集的特征值带进EM里的插值函数。返回插值处理后的特征值数据集。

4.5.三者比较的结果的可视化

代码如two包里的share.py所示,调用Plotfigure函数,如two包里的mainfunction.py所示,mainfunction.py通过调用ppcamake, emmake, bpcamake,share模块里的函数里的处理后的特征值数据集。进行可视化分析。bpca算法和EM算法插值的效果几乎相同,可见bpca算法最有效。
在这里插入图片描述
在标准化后的EM_bbca_pbca插值的折线图这里插入图片描述
在这里插入图片描述

经验总结:
处理的数据存入表格,再进行操作,否则,会出现容易出现object类型
安装ycimpute库需要下载适合python版本的whl包

知识可以共享,数据打死也不会共享。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值