数据挖掘中常用的数据清洗方法
2016-06-29 14:08
609 查看
对于数据挖掘来说,80%的工作都花在数据准备上面,而数据准备,80%的时间又花在数据清洗上,而数据清洗的工作,80%又花在选择若干种适当高效的方法上。用不同方法清洗的数据,对后续挖掘的分析工作会带来重大影响。
1、数值化
由于原始数据往往存在各种不同格式的数据形式,比如如果你要处理的数据是数值型,但是原始数据也许有字符型或者其他,那就要对其进行标准化操作。处理的方式可以很简单也可以很复杂,我采取过的一个方法是:对字符串取值,按照ANSI码值求和得到字符串的值,如果值太大,可以取一个适当的质数对其求模,本质上就是映射到一个区间了。然后就得到数值型的数据了。
2、标准化 normalization
由于原始数据各个维度之间的数值往往相差很大,比如一个维度的最小值是0.01,另一个维度最小值却是1000,那么也许在数据分析的时候,计算相关性或者方差啥的指标,后者会掩盖了前者的作用。因此有必要对整体数据进行归一化工作,也就是将它们都映射到一个指定的数值区间,这样就不会对后续的数据分析产生重大影响。我采取过的一个做法是:min-max标准化。
3、降维
由于原始数据往往含有很多维度,也就是咱们所说的列数。比如对于银行数据,它往往就含有几十个指标。这些维度之间往往不是独立的,也就是说也许其中之间若干的维度之间存在关联,也许有他就可以没有我,因此咱们可以使用数据的相关性分析来降低数据维度。我使用过的一个方法是:主成分分析法。
4、完整性:
解决思路:数据缺失,那么补上就好了。
补数据有什么方法?
解题思路:去除重复记录,只保留一条。
去重的方法有:
解题思路:用最权威的那个渠道的数据
方法:
对不同渠道设定权威级别,例如:在家里,首先得相信媳妇说的。。。
解题思路:设定判定规则
设定警告规则,凡是不在此规则范围内的,进行警告,然后人工处理
离群值人工特殊处理,使用分箱、聚类、回归、等方式发现离群值
解决数据的一致性问题
解题思路:建立数据体系,包含但不限于:
1、数值化
由于原始数据往往存在各种不同格式的数据形式,比如如果你要处理的数据是数值型,但是原始数据也许有字符型或者其他,那就要对其进行标准化操作。处理的方式可以很简单也可以很复杂,我采取过的一个方法是:对字符串取值,按照ANSI码值求和得到字符串的值,如果值太大,可以取一个适当的质数对其求模,本质上就是映射到一个区间了。然后就得到数值型的数据了。
2、标准化 normalization
由于原始数据各个维度之间的数值往往相差很大,比如一个维度的最小值是0.01,另一个维度最小值却是1000,那么也许在数据分析的时候,计算相关性或者方差啥的指标,后者会掩盖了前者的作用。因此有必要对整体数据进行归一化工作,也就是将它们都映射到一个指定的数值区间,这样就不会对后续的数据分析产生重大影响。我采取过的一个做法是:min-max标准化。
3、降维
由于原始数据往往含有很多维度,也就是咱们所说的列数。比如对于银行数据,它往往就含有几十个指标。这些维度之间往往不是独立的,也就是说也许其中之间若干的维度之间存在关联,也许有他就可以没有我,因此咱们可以使用数据的相关性分析来降低数据维度。我使用过的一个方法是:主成分分析法。
4、完整性:
解决思路:数据缺失,那么补上就好了。
补数据有什么方法?
- 通过其他信息补全,例如使用身份证件号码推算性别、籍贯、出生日期、年龄等 - 通过前后数据补全,例如时间序列缺数据了,可以使用前后的均值,缺的多了,可以使用平滑等处理,记得Matlab还是什么工具可以自动补全 - 实在补不全的,虽然很可惜,但也必须要剔除。但是不要删掉,没准以后可以用得上 - 解决数据的唯一性问题
解题思路:去除重复记录,只保留一条。
去重的方法有:
- 按主键去重,用sql或者excel“去除重复记录”即可, - 按规则去重,编写一系列的规则,对重复情况复杂的数据进行去重。例如不同渠道来的客户数据,可以通过相同的关键信息进行匹配,合并去重。 - 解决数据的权威性问题
解题思路:用最权威的那个渠道的数据
方法:
对不同渠道设定权威级别,例如:在家里,首先得相信媳妇说的。。。
- 解决数据的合法性问题
解题思路:设定判定规则
- 设定强制合法规则,凡是不在此规则范围内的,强制设为最大值,或者判为无效,剔除 - 字段类型合法规则:日期字段格式为“2010-10-10” - 字段内容合法规则:性别 in (男、女、未知);出生日期<=今天
设定警告规则,凡是不在此规则范围内的,进行警告,然后人工处理
- 警告规则:年龄》110
离群值人工特殊处理,使用分箱、聚类、回归、等方式发现离群值
解决数据的一致性问题
解题思路:建立数据体系,包含但不限于:
- 指标体系(度量) - 维度(分组、统计口径) - 单位 - 频度 - 数据
相关文章推荐
- 我是运营,我没有假期
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- 修复mysql数据库
- 浅析SQL数据操作语句
- SQLServer 数据导入导出的几种方法小结
- 简述MySQL分片中快速数据迁移
- MySQL数据备份之mysqldump的使用详解
- C#实现窗体间传递数据实例
- C#中的委托数据类型简介
- SQL Server删除表及删除表中数据的方法
- SqlServer2008误操作数据(delete或者update)后恢复数据的方法
- 给你的数据库文件减肥
- Oracle数据更改后出错的解决方法
- Oracle数据库数据丢失恢复的几种方法总结
- C#将Sql数据保存到Excel文件中的方法
- C#实例代码之抽奖升级版可以经表格数据导入数据库,抽奖设置,补抽
- SQL Server简单实现数据的日报和月报功能
- MFC实现在文件尾追加数据的方法