zoukankan      html  css  js  c++  java
  • 数据挖掘-数据预处理之数据清洗

    数据清洗:数据清洗作为数据预处理中的一个步骤,主要用于处理由于数据仓库中数据不完整、数据噪声以及数据不一致导致的问题。

    有人可能质疑,为什么要对数据进行清洗?忽略那些出问题的数据不行吗?当然,视而不见确是一种应对策略,但作为数据挖掘中的一环,没有高质量的数据又谈何挖掘的可信性。为此,对于数据数据挖掘来说,数据的清洗大有必要。

    对于数据缺失可以简单理解为感兴趣的数据没有值,对于这种情形,常见的处理方法有以下几种方式:

    1.忽略该记录;

    2.手动填写空缺记录;

    3.使用全局默认值;

    4.使用属性均值来填充记录;

    5.使用同类样本的均值填充记录(多用于具有分类性质的情况中);

    6.使用预测值(例如采用回归、构建决策树进行推断等方式来预测可能值);

    对于数据噪声可以理解为数据中存在错误或者数据偏离期望值,‘即:测量过程中测量值相对于真实值产生的偏差或错误。去除噪声主要有以下三种方法:

    1.分箱:所谓分箱就是对原始数据进行分组,然后对每一组内的数据进行平滑处理。常见的分箱的方式主要有等深分箱(每组数据一样多)、等宽分箱(每组区间长度一样)、用户自定义、最小熵(各分组内的数据具有最小熵,即:最小的不确定性);而平滑的方式主要有均值平滑(用组内均值来代替组内每个元素)、中间值平滑(用组内中间值来代替组内每个元素)、边界平滑(用组内离得较近的边界值来代替组内元素);

    2.回归:回归的方法通过对数据进行拟合发现匹配数据的曲线(线性回归)或者面(多线性回归)即拟合函数,进而通过拟合函数对数据进行平滑处理;

    3.聚类:聚类将具有相同值的项分在一个Cluster里面,这样就可以很容易得到Outliers。

    对于许多平滑方法来说,同样适用于数据规约。例如可以通过分箱的方法可以削减属性的值空间;反之,数据离散化的方法例如概念分层同样可以用于数据平滑处理。

    对于数据不一致主要由于数据源不一致导致数据内涵不一致。

    不论你现在身处何种境地,都有选择的权利,可以让状况变得更好或者更差,往往就在一念之间。
  • 相关阅读:
    cocos2d-x笔记5: 通过jni实现C++调用Java
    cocos2d-x笔记4: TextField不能删除内容,以及我的解决办法。。。
    C++ 11 笔记 (六) : 随机数
    C++ 11 笔记 (五) : std::thread
    C++ 11 笔记 (四) : std::bind
    C++ 11 笔记 (三) : auto
    C++ 11 笔记 (二) : for循环
    要做的题目
    【C补充】结构体的内存分配,匈牙利命名法
    【C补充】文件操作
  • 原文地址:https://www.cnblogs.com/zpfzb2013/p/3935416.html
Copyright © 2011-2022 走看看