数据挖掘与建模过程
一、数据获取/取样
明确挖掘目标,从业务系统中抽取出一个与挖掘目标相关的样本数据子集。一是相关性,二是可靠性,三是有效性
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score
二、数据探索
数据质量分析
- 缺失值分析
- 异常值分析
- 一致性分析
数据特征分析
数据特征分析要求我们在数据挖掘建模前,通过包括但不止以下分析方法对采集的样本数据的特征规律进行分析,以了解数据的规律和趋势,为数据挖掘的后续环节提供支持
- 分布分析
- 对比分析
- 统计量分析
- 周期性分析
- 贡献度分析
- 相关性分析
三、数据预处理
数据清洗
- 缺失值处理
插补方法 | 方法描述 |
---|---|
均值/中位数/众数插补 | 根据属性值的类型,用该属性取值的平均数/中位数/众数进行插补 |
使用固定值 | 将缺失的属性值用一个常量替换。如广州一个工厂普通外来务工人员的“基本工资”属性的空缺值可以用2015年广州市普通外来务工人员工资标准1895元/月,该方法就是使用固定值 |
最近临插法 | 在记录中找到与缺失样本最接近的样本的该属性值插补 |
回归方法 | 对带有缺失值的变量,根据已有数据和与其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值 |
插值法 | 插值法是利用已知点建立合适的插值函数f(x),未知值由对应点x_i求出的函数值f(xi)近似代替 |
- 异常值处理
异常值处理方法 | 方法描述 |
---|---|
删除含有异常值的记录 | 直接将含有异常值的记录删除 |
视为缺失值 | 将异常值视为缺失值,利用缺失值处理的方法进行处理 |
平均值修正 | 可用前后两个观测值的平均值修正该异常值 |
不处理 | 直接在具有异常值的数据集上进行挖掘建模 |
数据集成
将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。
- 实体识别:
从不同数据源识别出现实世界的实体,它的任务是统一不同源数据的矛盾之处 - 冗余属性识别:
数据集成往往导致数据冗余,例如:
①同一属性多次出现
②同一属性的命名不一致导致重复
数据变换
对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需要。
- 简单函数变换:对原始数据进行某些数学函数变换
①平方
②开平方
③取对数
④差分运算 - 规范化(归一化):消除指标之间的量纲和取值范围差异的影响
①最小-最大规范化
②零-均值规范化
③小数定标规范化 - 连续属性离散化
连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个字子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性映射到这些分类值。
方法:
①等宽法
②等频法
③基于聚类分析的方法 - 属性构造
利用已有的属性集构造出新的属性,并加入到现有的属性集合中 - 小波变换
数据规约
在大规模数据集上进心复杂的数据分析和挖掘需要很长的时间,数据规约产生更小但保持原数据完整性的新数据集
-
意义:
①降低无效、错误数据对建模的影响,提高建模的准确性
②少量且具代表性的数据将大幅缩减数据挖掘所需的时间
③降低储存数据的成本 -
属性规约(纵向)
-
数值规约(横向)
通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类
①直方图
②聚类
③抽样
Python主要预处理函数
函数名 | 函数功能 | 所属扩展库 |
---|---|---|
interpolate | 一维、高维数据插值 | Scipy |
unique | 去除数据中的重复元素,得到单值元素列表,它是对象的方法名 | Pandas/Numpy |
isnull | 判断是否空值 | Pandas |
notnull | 判断是否非空值 | Pandas |
PCA | 对指标变量矩阵进行主成分分析 | Scikit-Learn |
random | 生成随机矩阵 | Numpy |
四、数据建模
- 分类与预测
- 聚类分析
- 关联规则
- 时序模型
- 离群点检测
五、模型评价
目的是从模型中自动找出最好的模型,两外就是要根据业务对模型进行解释和应用
六、参考资料
《Python数据分析与挖掘实战》3-5章