数据挖掘之缺失数据缺失的各种插补算法比较
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包的使用方法如图从网站截图而来。
将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算法最有效。
经验总结:
处理的数据存入表格,再进行操作,否则,会出现容易出现object类型
安装ycimpute库需要下载适合python版本的whl包
知识可以共享,数据打死也不会共享。
数据挖掘之缺失数据缺失的各种插补算法比较相关推荐
- 插值法补齐缺失数据_一种挽救你缺失数据的好方法——多重补插
原标题:一种挽救你缺失数据的好方法--多重补插 缺失数据--研究中的绊脚石 在医学研究中,我们经常会碰到缺失数据.无论是因为实验设计的问题,或是检测手段精度,又或是医学实验中的不可抗力因素.一旦数据没 ...
- missforest_missforest最佳丢失数据插补算法
missforest Missing data often plagues real-world datasets, and hence there is tremendous value in im ...
- MATLAB数据预处理之缺失值插补
文章目录 前言 1 加载原始数据 2 查找缺失值并填充缺失值 总结 2021年4月5日09:51:56更新 2021年5月18日10:46:15更新 2022年10月15日07:25:01更新 参考资 ...
- CNC插补技术(从原理、分类到具体插补算法,较为详细)
版权声明:本文为CSDN博主「qq_39887918」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 对于插补技术的理解与认识 对于插补技术的理解与认识 1 插补及 ...
- c语言直线插补原理程序,直线插补算法
直线插补算法,就是刀具或绘笔每走一步都要和给定的数据进行比对,看该点在次点的上方或者是下方,从而决定下一步该怎么走. 即机床数控系统依照一定方法确定刀具运动轨迹的过程.也可以说,已知曲线上的某些数据, ...
- 圆弧插补程序c语言,用C语言写的简易的逐点比较法插补算法,包括直线逐点插补和圆弧插补...
源文件:https://pan.baidu.com/s/17FQKqn3UaEPQHkmTcOXKOg 提取码:atb2 #include #include #include #include //运 ...
- 开源项目推荐:运动控制速度前瞻算法(Look-Ahead),连续小线段高速插补算法
一.什么是速度前瞻 Look-Ahead 技术又称为速度前瞻控制技术,目前实现此技术有两个基本思路: 1.进行路径段之间速度衔接: 2.进行大量微小线段参数曲线拟合. Look-Ahead 技术考虑的 ...
- 基于单位四元数的姿态插补算法
基于单位四元数的姿态插补算法 文章目录 基于单位四元数的姿态插补算法 摘要 单位四元数空间与欧式空间的转化 四元数的旋转变换表示空间定点旋转 两个姿态间的插补 仿真验证 小结 摘要 现代制造领域对工业 ...
- DDA直线插补算法原理与实现(matlab)
DDA直线插补算法 数值微分法即DDA法(Digital Differential Analyzer),是一种基于直线的微分方程来生成直线的方法. 直线DDA算法描述 设(x1,y1)和(x2 ...
- 笛卡尔空间直线轨迹规划——S型曲线加减速插补算法(含MATLAB仿真验证代码)
写这个算法,是因为博主正在做一个机械臂和全向小车的项目,里面涉及需要笛卡尔空间做直线轨迹的规划.通常的算法有梯型加减速,这个算法只是速度连续,加速度并不连续.所以实际冲击较大,无法实现柔性控制.况且网 ...
最新文章
- JavaScript最全编码规范
- 理解shared_ptrT
- 全闪存存储时代 NVMe到底是什么?
- 数据分析入门极简书单
- web开发常用工具介绍
- JDK和JRE它们之间的关系及区别
- 三星旗舰机系列名称即将更换 S10或成最后绝唱
- 初识Quartz (一)
- configure/make的shared object参数
- 2021东华杯misc详解
- Pytorch-NLU,一个中文文本分类、序列标注(实体识别、分词、词性标注)的极简工具包,基于pytorch与tramsforers
- 【计算机组成原理】计算机系统概述 —— 计算机硬件组成与性能指标
- 不一样的设计!20个国外优秀的电子商务网站
- python处理netcdf_Python处理netCDF文件
- WebRTC中的信令和内网穿透技术 STUN / TURN
- 老笔记本机械硬盘换固态装系统,再战10年!
- 感悟信息安全之道——温水煮青蛙
- 视频教程-Oracle从入门到精通全套视频教程之SQL与PLSQL(四)-Oracle
- vue定制化桌面开发
- css 实现跑马灯/走马灯无缝衔接 js实现无缝滚动图片