数据挖掘复习笔记第三章——数据预处理

第三章 数据预处理

3.1 数据预处理:概述

​ 数据有可能是有缺失、不一致、有噪声、高维

  • 数据质量:

    保证完整性 一致性 有噪声 准确性 时效性 可信性 可解释性

  • 数据预处理的主要工作:

    • 抓取/抽取工作:从不同的网络、平台、 数据库、数据格式、 应用中抽取数据。

    • 清洗:空缺、噪声数据处理等

    • 集成数据:合并、汇总、过滤等

    • 降维:将高维数据降低到低维空间中

    • 转换:重新格式化和转换

      质量差 → \rightarrow 数据清洗 → \rightarrow 质量可控
      来源多样化 → \rightarrow 数据集成 → \rightarrow 统一数据
      维度灾难 → \rightarrow 数据降维 → \rightarrow 低维表示
      规范不统一 → \rightarrow 数据转换 → \rightarrow 规范化的数据

3.2 数据抽取

  • 词频:

词 频 ( T F ) = 某 个 词 在 文 章 中 的 出 现 次 数 词频(TF)=某个词在文章中的出现次数 (TF)=

  • “词频”进行标准化:

词 频 ( T F ) = 某 个 词 在 文 章 中 的 出 现 次 数 文 章 的 总 词 数 词频(TF)=\frac{某个词在文章中的出现次数}{文章的总词数} (TF)=

  • TF-IDF:
    逆 文 档 频 率 ( I D F ) = l o g ( 语 料 库 的 文 档 总 数 包 含 该 词 的 文 档 数 + 1 ) 逆文档频率(IDF)=log(\frac{语料库的文档总数}{包含该词的文档数+1}) (IDF)=log(+1)

    T F − I D F = 词 频 ( T F ) × 逆 文 档 频 率 ( I D F ) TF-IDF=词频(TF)\times逆文档频率(IDF) TFIDF=(TF)×(IDF)

3.3 数据清洗

  • 现实世界的数据一般为脏数据:许多潜在的不正确的数据,eg.仪器故障,人为或电脑错误,传输错误
    • 不完整:缺少属性值,缺少某些感兴趣的属性
    • 有噪声:包含噪声、误差或异常值
    • 不一致:包含代码或名称上的差异
    • 蓄意: 伪装缺失的数据
  • 缺失值:
    • 数据丢失的原因:
      • 设备异常
      • 人为失误
      • 输入时,有些数据因得不到重视而没有被输入
      • 不适用(N/A)
    • 如何处理空缺值:
      • 忽略元组
      • 人工填写空缺值
      • 自动填充:
        • 使用一个全局变量填充空缺值:比如“unknown”或∞
        • 使用属性的平均值填充空缺值
        • 使用与给定元组属同一类的所有样本的平均值
        • 使用最可能的值填充空缺值(建模预测)
  • 噪声数据:
    • 一个测量变量中的随机错误或偏差
    • 引起不正确属性值的原因:
      • 数据收集工具的问题
      • 数据输入错误
      • 数据传输错误
      • 技术限制
    • 如何处理噪声数据:
      • 分箱:
        • 按递增顺序对数据进行排序
        • 分到(等频的)箱子中
        • 使用光滑技术
          • 箱均值光滑
          • 箱中位数光滑
          • 箱边界光滑
    • 离群点不等于异常点
      • 处理离群点:
        • 聚类:将联系松散的数据当作离群点,监测并且去除离群点。 聚类集合之外的点即为离群点。
        • 回归:通过让数据适应回归函数来平滑数据(线性回归或非线性 回归)。
        • 盒图:通过盒图画出离群点

3.4 数据集成

  • 将多个数据源中的数据合并,存放在一个数据存储中。如放在数据仓库中。
  • 数据集成有助于减少结果数据集的冗余和不一致,提高挖掘过程的准确性和速度。
3.4.1 数据集成存在的问题
3.4.1.1实体识别问题
  • 从多个数据源识别现实世界的实体。
  • 利用元数据:每个属性的元数据包括名字、含义、数据类型和属性的值的允许范围,以及处理空缺值的规则。(元数据可以避免模式集成的错误,有助于变化数据)
3.4.1.2 属性冗余和相关性
  • 同一属性在不同的数据库中会有不同的字段名;一个属性可以由另外的属性导出(“派生”属性),即两个属性是相关的。
1.标称数据的卡方检验
  • 假设A有c个不同的值:a1,a2,a3, ⋯ \cdots ,ac B有r个不同的值:b1,b2,b3, ⋯ \cdots ,br
  • 包含属性A和属性B的元组可以使用一个相依表表示,其中A属性的c个不同值构成表的列,B属性的r个不同值构成表的行。
  • 令(Ai,Bj)表示属性A取ai而属性B取bj的联合事件,即(A=ai,B=bj)。
  • 标称数据的卡方相关检验3
2.数值数据的相关系数
  • 相关系数在这里插入图片描述
  • 通过计算x和y不存在线性相关关系,但实际可能会存在非线性相关的关系。
3.数值数据的协方差
  • 相关性和协方差是评价两个属 性是否一起发生变化的两种相似的测量。
  • 协方差在这里插入图片描述
  • 如果A和B相互独立(没有关联),则协方差为0。反过来并不成立。
3.4.1.3 元组重复
3.4.1.4 数据值冲突的检测与处理

3.5 数据归约:合并多个数据源

  • 数据归约:用来获得数据集的归约表示
    • 属性个数更小
    • 对象数量更小
    • 但任然更接近于保持原始数据的完整性
    • 为什么进行数据归约? 为了存储量和计算量
3.5.1 数据归约的概述
  • 维归约:减少所考虑的随机变量或属性的个数。
    • 属性自己选择
    • 主成分分析
    • 扩展方法(LDA、NMF)
  • 数量归约:用替代的、较小的数据表示形式替换原数据。
    • 回归模型:参数化数据归约
    • 直方图
    • 聚类
    • 抽样
  • 数据归约的策略:
    • 维归约:通过删除不相干的属性(或维),或者对属性进行重构
    • 数量规约:通过删除冗余的对象,减少数据量
3.5.2 属性子集选择
  • 子集选择:

    • 目标:找出最小属性集,使得数据类别的分布尽可能接近使用所有属性的原始分布。

    • 好处:减少属性的数目,使得模式更易于理解。

    • 启发式的(探索性的/贪心算法)方法

      • 逐步向前选择:从空集开始,逐步添加

      • 逐步向后删除:从整个属性集开始,逐步删除

      • 向前选择和向后删除相结合

    • 属性子集选择标准

      • 信息增益(IG):评价重要程度
    • 互信息(MI)

  • 熵:描述数据的不确定性
    比较确定时,熵值较小;完全不确定时,熵值最大;完全确定时,熵值为0
    H ( X ) = − ∑ i = 1 n p ( x i ) l o g b p ( x i ) H(X)=-\sum_{i=1}^n p(x_i)log_bp(x_i) H(X)=i=1np(xi)logbp(xi)

    G a i n ( S , X ) = H ( S ) − ( H ∣ X ) Gain(S,X) = H(S)-(H|X) Gain(S,X)=H(S)(HX)

    信息增益IG;如果IG越大,说明消除不确定的程度越大。

3.5.3 主成分分析
  • 搜索k个最能代表数据的d维正交向量,其中k<=d
  • 原数据投影到一个更小的空间上,导致维归约
  • 目标是创建一个替换的、较小的变量集“组合”属性

在这里插入图片描述

3.5.4 扩展方法
  • LDA主题模型(Latent Dirichlet Allocation)
    • 是Blei等人于2003年提出的基于概率模型的主题模型算法,LDA是一种非监督机器学习技术,可以用来识别大规模文档集或语料库中的潜在隐藏的主题信息。该方法假设每个词是由背后的一个潜在隐藏的主题中抽取出来。
  • 非负矩阵分解NMF(Nonnegative Matrix Factorization)
3.5.5 回归模型
  • 回归模型可以用来近似给定的数据。
3.5.6 直方图
  • 直方图使用分箱来近似数据分布
  • 划分规则:
    • 等宽
      • 将范围划分为N个大小相等的间隔:均匀网格
3.5.7 聚类

​ 聚类技术把数据元组看做对象,将对象划分为群或簇,使得在一个簇中的对象相互“相似”,而与其他簇中的对象“相异”。通常,相似性基于距离函数。

3.5.8 抽样
  • 抽样可以作为一种数据归约的技术使用。
  • 抽样:允许用数据小得多的随机样本(子集)表示大型数据集。
  • 关键原则:选择数据的一个代表性子集。
  • 如果样本与原始数据具有近似相同的(感兴趣的)属性,则该样本具有代表性。
    • 简单随机抽样
    • 簇抽样
    • 分层抽样
  • 抽样的方式
    • 简单随机抽样(SRS):选择任何特定项目的概率都是相等的
    • 无放回简单随机抽样(SRSWOR):一旦某个对象被选中,它将从群体中删除
    • 有放回简单随机抽样(SRSWR):已选中的对象不从群体中移除

3.6 数据变换与数据离散化

  • 标称数据转成one-hot编码

  • 数据变换的策略:

    • 平滑:去除数据中的噪声。如分箱、聚类、回归。

    • 属性重构:通过现有属性构造新的属性,并添加到属性集中。

    • 规范化:将数据按比例缩放,使之落入一个小的特定区间。

      • 最小-最大规范化在这里插入图片描述

        • 最小—最大值标准化保留了原有数据值的关系。
      • z-score规范化:基于属性A的平均值和标准差规范化。
        v ′ = v − A ‾ σ A v'=\frac{v-\overline{A}}{\sigma_A} v=σAvA
        其中 A ‾ \overline{A} A σ A \sigma_A σA是属性A的均值和标准差。 标准差可以用均值绝对偏差替换。

      • 小数定标规范化:通过移动属性A的小数点位置进行规 范化。
        v ′ = v 1 0 j v'=\frac{v}{10^j} v=10jv
        其中j是使得max(|v’|)<1的最小整数。

    • 离散化:用区间标签或概念标签替换。

      • 原因:易于组织成更高层次的概念;某些模型只能使用离散属性(决策树)
      • 决策树:结点{属性} 边{属性值} 叶子结点{类别}
      • 离散化将连续属性的范围划分为区间,通过区间标签可用来替换实际的数据值,通过离散化减少数据取值的个数。
      • 分箱
    • 概念分层:数据属性可以泛化得到较高的概念层。层次性地组织概念(如:属性值)

      • 概念层次结构的形成:通过收集较低级概念(如城市)并将其替换为较高级的概念(如省份等),可以减少数据取值的数量。

3.7 小结

第三章完

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇笔记主要介绍了Pandas模块的基本操作和使用方法。Pandas是Python中一个用于数据分析和处理的常用库,提供了高效的数据结构和数据分析工具,是进行数据处理和数据挖掘的重要工具之一。 一、Pandas数据结构 Pandas主要有两种数据结构:Series和DataFrame。 1. Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的标签(即索引)组成。Series的创建方式如下: ```python import pandas as pd # 通过列创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 通过字典创建Series s = pd.Series({'a': 1, 'b': 2, 'c': 3}) ``` 2. DataFrame DataFrame是一种二维格数据结构,由一组数据和一组行索引和列索引组成。DataFrame的创建方式有很多种,最常用的是通过字典创建。例如: ```python import pandas as pd data = {'name': ['Tom', 'Jerry', 'Mike'], 'age': [18, 20, 22], 'gender': ['M', 'M', 'F']} df = pd.DataFrame(data) ``` 二、Pandas的基本操作 1. 数据读取 Pandas可以读取多种格式的数据文件,如CSV、Excel、SQL等。常用的读取CSV文件的方式如下: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 2. 数据预处理 数据预处理数据挖掘中非常重要的一部分,Pandas提供了很多方便的函数和方法来进行数据清洗和转换。常用的数据预处理函数和方法有: - 处理缺失值 ```python # 判断是否存在缺失值 df.isnull() # 删除缺失值 df.dropna() # 填充缺失值 df.fillna(value) ``` - 处理重复值 ```python # 删除重复值 df.drop_duplicates() ``` - 数据转换 ```python # 数据类型转换 df.astype() # 数据替换 df.replace() ``` 3. 数据分析 Pandas提供了各种数据分析和处理的方法和函数,常用的包括: - 统计函数 ```python # 计算平均值 df.mean() # 计算标准差 df.std() # 计算最大值和最小值 df.max(), df.min() ``` - 排序 ```python # 按照某列排序 df.sort_values(by='column_name') ``` - 数据聚合 ```python # 对某列数据进行分组求和 df.groupby('column_name').sum() ``` 以上是Pandas模块的基础内容,还有很多高级用法和技巧需要进一步学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值