今天把前几天学习的数据预处理,总结了以下:
在数据挖掘中,巨量的原始数据存在着大量不完整的数据,严重影响数据挖掘建模的效率。甚至可能导致数据挖掘结果的偏差,所以进行数据清洗就显得尤为重要。
数据预处理的主要内容包括:
(1)数据清洗
(2)数据集成
(3)数据变换
(4)数据规约
1.数据清洗
1.1缺失值处理
处理缺失值的方法可分为3类:删除记录,数据插补和不处理。如果通过简单的删除小部分达到既定目标,那么删除含有缺失值的记录的方法是有效的。但是,处理小批量数据时,会有很大的局限性。会有可能丢失数据的特征,这样使建模挖掘的结果有偏差。
(1)拉格朗日插值法
根据数学知识可知,对于平面上已知的n个点可以找到一个n-1次多项式,
能够补全缺失值。
2.数据集成
2.1实体识别
数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储的过程中。
实体识别是指从不同的数据源中识别出现实世界的实体,它的任务是统一不同的数据的矛盾之处。
(1)同名异义
数据源A中的属性ID和数据源中的属性ID分别描述的是菜品编号和订单编号,即描述的是不同的实体。
(2)异名同义
数据源A中的sale_dt和数据源中的sales_date都是描述销售日期的,即A.sales_dt=B.sales_date
2.2冗余实习识别
数据集成往往导致数据冗余:
1)同意属性多次出现
2)同意属性命名不一致导致重复
3.数据变换
数据变换重要是对数据进行规范化处理,将数据转化成合适的形式,适用于数据挖掘的任务及算法的需要。
3.1规范化
为了消除指标之间的差异影响,需要进行规范化处理,将数据按照比例进行缩放。
数据规范化对于基本距离的挖掘算法尤为重要。
(1)最大-最小规范化
(max-min)为极差
最大-最小规范化也称离差标准化,是对原始数据的线性变换,将数值映射到[0 ,1]之间。
(2)零-均值规范化
零-均值规范化也称标准差规范化,经过处理的数据均值为0,标准差为1。
为均值,
为标准差。
import pandas as pd
import numpy as np
datafile = '../Data/normalization_data.xls' # 参数初始化
data = pd.read_excel(datafile, header= None) # 读取数据
min_max = (data - data.min()) / (data.max() - data.min()) # 最小-最大规范化
zero_mean = (data - data.mean()) / data.std() # 零-均值规范化
small = data / 10**np.ceil(np.log10(data.abs().max())) # 小数定标规范化