Python数据分析与挖掘实战——第四章

目录

第四章 数据预处理

一、概括

二、数据清洗

1. 缺失值处理

2. 异常值处理

三、数据集成

1. 实体识别

2. 冗余属性识别

四、数据变换

1. 简单函数变换

2. 规范化

3. 连续属性离散化

4. 属性构造

5. 小波变换

五、数据规约

1. 属性规约

2. 数值规约


第四章 数据预处理

一、概括

问题:不完整、不一致、异常

处理:数据清洗、数据集成、转换、规约等一系列的处理,为数据预处理

目的:一方面要提高数据的质量,另一方面要让数据更好地适应特定的挖掘技术或工具

主要内容:

数据清洗

  1. 缺失值处理——删除、插补、不处理
  2. 异常值处理——删除、不处理、平均值修正、视为缺失值

数据集成

  1. 实体识别;2. 冗余属性识别

数据变换

  1. 简单函数变换;2. 规范化;3. 连续属性离散化;4. 属性构造;5. 小波变换

数据规约

  1. 属性规约(纵向); 2. 数值规约(横向)

Python数据分析与挖掘实战——第四章_第1张图片

 

二、数据清洗

主要任务:删除原始数据集中的无关数据、重复数据、平滑噪声数据、筛选掉与挖掘主题无关的数据、处理缺失值、异常值

1. 缺失值处理

三种处理方式:删除记录、数据插补、不处理

插补方式有:

Python数据分析与挖掘实战——第四章_第2张图片

 

插补方法:均值/中位数/众数插补; 固定值插补; 最近临插补; 回归方法; 插值法

删除数据具有的局限性:以减少数据来换取数据的完备,会造成资源的大量浪费——会影响到分析结果的客观性和正确性

※ 有的模型将缺失值视作一种特殊的取值,允许直接在含有缺失值的数据上进行建模

→ 插值法 ←

拉格朗日插值法、牛顿插值法、Hermite插值、分段插值、样条插值法等

1) 拉格朗日插值法

lagrange(x,y) 的输出值 poly1dxy中的数的index列表,y为数的列表,poly1d的值是多项式的几个系数

插值则用lagrange(x,y)(n) 实现对n插值

2) 牛顿插值法

 

2. 异常值处理

1) 异常值是否剔除,视情况而定

2) 处理方法

       删除含有异常值的记录(缺点:改变原有数据分布

       视为缺失值(使用缺失值的方法处理

       平均值修正(用前后两个观测值的平均值修正

       不处理

3) 分析异常值出现的原因,判断是否应该舍弃

 

三、数据集成

原因:数据往往分布在不同的数据源中

定义:将多个数据源合并存放在一个一直的数据存储(如数据仓库)中的过程

实体的表达形式不同,存在实体识别问题和属性冗余问题

 

1. 实体识别

定义:从不同数据源识别出现实世界的实体

任务:统一不同源数据的矛盾之处

1)同名异义:不同表格中的不同id表达的意义不同

2)异名同义:std_id 和 student_id 是一样

3)单位不统一:有的用的国际单位,有的用的地方单位

 

2. 冗余属性识别

1) 同一属性多次出现

2) 同一属性命名不一致导致重复

3) 两个属性相关度高,可用相关分析检测,度量一个属性在多大程度上蕴含另一个属性

 

四、数据变换

目的:对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需求

1. 简单函数变换

1)常用于:将不具有正态分布的数据 变换为 具有正态分布的数据

2)时间序列中,使用对数变换或者差分运算,可将非平稳序列转换成平稳序列

3)数据挖掘中,可使用对数变换对大范围数据进行压缩

常用变换: 平方 开方 取对数 差分运算

 

2. 规范化

不同评价指标往往具有不同的量纲,数值间的差别可能很大,不进行数据处理可能会影响到数据分析的结果。

目的:消除指标间的量纲取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入到一个特定的区域,便于进行综合分析。

1)最小-最大规范化

也称 离差标准化

是对原始数据的线性变换

Python数据分析与挖掘实战——第四章_第3张图片

 

缺点:

① 若max很大,则规范化后,都会接近0,且相差不会很大

② 若出现超过[min,max]的值时,会引起系统出错,需要重新确定min和max

 

2)零-均值规范化

也称 标准差标准化  当前用的最多的数据标准化方法

经过处理过的数据,均值为0,标准差为1

Python数据分析与挖掘实战——第四章_第4张图片

均值  δ为标准差

 

3)小数定标规范化

 

Python数据分析与挖掘实战——第四章_第5张图片

通过移动属性值的小数位数来规范化

移动的小数位数取决于属性绝对值的最大值 

 

3. 连续属性离散化

目的:将连续属性变换成分类属性,因为有的数据挖掘算法要求数据是分类属性的形式

1)离散化的过程

在数据的取值范围内,设定若干个离散的划分点,将取值范围划分为一些离散化的区间

子任务:确定分类数  将连续属性值映射到分类值

2)常用的离散化方法

① 等宽法

将之与分为具有相同宽度的区间,区间个数由数据本身的特点决定、或者由用户指定

缺点:对离群点比较敏感,趋向于不均匀地把属性值分不到各个区间,会严重损坏建立的决策模型

② 等频法

将相同数量的记录放进每个区间

缺点:可能将相同的数据值分到不同的区间以满足每个区间中固定的数据个数

③ 基于聚类分析的方法

一维聚类

i. 将连续属性的值用聚类算法进行聚类(如k-means

ii. 将聚类得到的簇进行处理,合并到一个簇的连续属性值并做统一标记

聚类分析的离散化方法需要用户指定簇的个数,从而决定产生的区间数

 

4. 属性构造

为了提取有用的信息,挖掘更深层次的模式,提高挖掘结果的精度,需要利用已有的属性集构造出新的属性,并加入到现有的属性集合中

 

5. 小波变换

信号分析手段,具有多分辨率的特点,在时域和频域都具有表征信号局部特征的能力,通过伸缩和平移等运算过程对信号进行多尺度的聚焦分析,提供了一种非平稳信号的时频分析手段,可以由粗及细地逐步观察信号,从中提取有用信息

能够刻画某个问题的特征量往往是隐含在一个信号中的某个或者某些分量

小波变换可以把非平稳信号分解为表达不同层次、不同频带信息的数据序列,即小波系数

1)基于小波变换的特征提取方法

基于小波变换的多尺度空间能量分布特征提取方法

基于小波变换的多尺度空间的模极大值特征提取方法

基于小波包变换的特征提取方法

基于适应性小波神经网络的特征提取方法

(看不懂 告辞!!!)

 

五、数据规约

大数据集上进行数据分析和挖掘需要很长时间

数据规约:产生更小但保持原数据完整性的新数据集——更有效率

意义:

降低无效、错误数据对建模的影响,提高建模的准确性

少量且具有代表性的数据将大幅缩减数据挖掘的时间

降低存储数据成本

1. 属性规约

1) 方法:

    通过属性合并来创造新属性维数,或直接删除不相关的属性(维)来减少数据维数

2) 目的

    寻找出最小的属性子集,并确保新数据自己的概率分布尽可能地接近原来数据集的概率分布

3) 常用方法:

    合并属性

    逐步向前选择:直接删除

    逐步向后删除:直接删

    决策树归纳:直接删

    主成分分析:用于连续属性的数据建模方法

4) 主成分分析方法

    from sklearn.decomposition import PCA

    sklearn.decomposition.PCA(n_components = None, copy = True, whiten = False)

    n_components:PCA算法中要保留的主成分个数n,即保留下来的特征个数n 。

    int或者string类型,int则为维度数,string,如‘mle’,满足方差百分比

    copy:True或False,默认为True。 True之后原始训练数据的值不会该表,False则是直接在原始数据上进行降维

    whiten:默认False。白化,使每个特征具有相同的方差

    eg:

     pca = PCA()

    pca.fit(data)

    pca.components_  返回模型的各个特征向量

    pca.explained_variance_ratio_  返回各个成分各自的方差百分比(也称贡献率),方差百分比越大,说明向量的权重越大

    ↑↑↑ 此时可看每个成分的贡献率,以此来选择降维的维数↑↑↑

    确定维数n之后

    pca = PCA(n)

    pca.fit(data)

    low_d = pca.transform(data)    # 用于降低维数

    pca.inverse_transform(low_d)   # 必要时可以用函数来复原数据

 

 

2. 数值规约

定义:通过选择替代的、较小的数据来减少数据量。

包括:有参数方法、无参数方法

1)有参数方法

    使用一个模型来评估数据,只需存放参数,而不需要存放实际数据。如回归(线性回归、多元回归)和对数线性模型

2)无参数方法

    需要存放实际数据,如直方图、聚类、抽样

a. 直方图

    使用分箱来近似数据分布。

    属性A的直方图将A的数据分布划分为不相交的子集或桶。

    如果每个桶只代表单个属性/频率对,则称为单桶

    桶表示给定属性的一个连续区间

b. 聚类

    将数据元组(一行数据)视为对象,将对象划为簇。用数据的簇替换实际数据

    有效性依赖簇的定义是否符合数据的分布性质

c. 抽样

    用比原始数据小得多的随机样本表示原始数据集

    分为:s个样本无放回简单随机抽样、s个样本放回简单随机抽样、聚类抽样、分层抽样

d. 参数回归

    简单线性模型和对数线性模型都可

    对数线性模型还可用于维规约和数据光滑

 

 

你可能感兴趣的:(Python数据分析与挖掘实战)