数据预处理经验

数据清洗:缺失值,异常值,重复值的处理

一、数据列缺失的4种处理办法

1.丢弃

      直接删除带有缺失值的行记录或列记录,减少缺失数据记录对总体数据的影响。以下场景不宜采用此办法:

       (1)数据集总体中存在大量的数据记录不完整情况且比例较大(超过10%),删除会损失许多有用信息

       (2)带缺失值的数据记录大量存在着明显的数据分布规律和特征,例如:带缺失值的数据的目标标签集中在某一类或某几类,                  删除会导致模型过拟合或分类不准确

2、补全

       (1)统计法:对于数值型的数据,使用均值,加权均值,中位数等方法补全,对于分类型数据,使用类别众数最多的值补足

       (2)模型法:如果带有缺失值的列是数值变量,采用回归模型补全,如果是分类变量,采用分类模型补全

       (3)专家补全:对于少量且有重要意义的数据记录,专家补足是重要办法

       (4)其他:随机法,特殊值法,多重填补

3、真值转换法

       把数据缺失也看作一种规律

       例:很多数据库无法对会员的性别进行补足,又舍不得将其丢弃,可将男、女、未知从一个变量的多个值分布状态转换为多个变量的真值分布状态。

             转换前:性别(男,女,未知)

            转换后:性别_男(值域1或0),性别_女(值域1或0),性别_未知(值域1或0)

4、不处理

      这种思路主要看后期的数据分析和建模应用,很多模型对缺失值有容忍度或灵活的处理方法,常见的能自动处理缺失值的模型包括:KNN,决策树,随机森林,神经网络,朴素贝叶斯等

      处理思路:

        (1)忽略,确实值不参与距离计算,例如KNN

        (2)将缺失值作为分布的状态,并参与到建模过程,例如各种决策树及其变体

二、不要轻易抛弃异常数据

     异常数据是数据分布的常态,处于特定分布区域或范围之外的数据通常被定义为异常或“噪音”,产生噪音的原因很多,例如业务运营操作,数据采集问题,数据同步问题,对异常数据处理之前要分辨哪些是真正的异常数据,数据异常的状态看分为两种:

      (1)“伪异常”,是由于业务特定运营动作产生,其实是正常反映业务状态,而不是数据本身的异常规律

       (2)“真异常”,客观的反映了数据本身分布异常的个案

以下几种情况下,无需对异常值做抛弃处理

1、异常值反映了业务运营结果

例如:公司的A商品正常情况下日销量为1000台左右,由于昨日促销导致总销量达到10000台,由于备货不足导致今日销量下降到100台,这种情况下,10000和100都正常反映了业务运营的结果,而非异常数据

2、异常检测模型

异常检测模型针对整体样本中的异常数据进行分析和挖掘以便找到其中的异常个案和规律,这种数据应用围绕异常值展开,因此不能抛弃。异常检测模型常用于客户异常识别,信用卡欺诈,药物变异识别,恶劣气象预测,流量作弊检测,网络入侵检测等,这种情况下,异常数据本身是目标数据,如果处理掉将损失关键信息。

3、包容异常值的数据模型

如果数据算法和模型对异常值不敏感,那么不处理也不会对模型造成负面影响,例如在决策树中,异常值本身就可以作为一种分裂节点。

三、数据重复就需要去重吗

数据集中的重复值包括以下两种情况:

(1)数据值完全相同的多条数据记录

(2)数据主体相同但匹配到的唯一属性值不同

一下几种情况,不建议去重:

1、重复的记录用于分析演变规律

2、重复的记录用于样本不均衡处理

3、重复的记录用于检测业务规则问题

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据挖掘是从大量数据中提取有用信息的过程,而数据预处理数据挖掘的重要步骤之一,它包括数据清洗、数据集成、数据变换和数据规约等操作。Python是一种常用的编程语言,也有很多用于数据挖掘和数据预处理的库和工具。 在Python中,有一些常用的库可以用于数据挖掘和数据预处理,例如: 1. NumPy:用于进行数值计算和数组操作,可以处理大规模的数据集。 2. Pandas:提供了高效的数据结构和数据分析工具,可以进行数据清洗、转换和整合等操作。 3. Scikit-learn:是一个机器学习库,提供了各种常用的数据挖掘算法和工具,包括数据预处理方法。 4. Matplotlib和Seaborn:用于数据可视化,可以绘制各种图表和图形,帮助理解和分析数据。 在进行数据预处理时,常见的操作包括: 1. 数据清洗:处理缺失值、异常值和重复值等问题。 2. 数据集成:将多个数据源合并为一个整体,解决数据冗余和不一致性问题。 3. 数据变换:对数据进行转换,例如标准化、归一化、离散化等。 4. 数据规约:降低数据维度,减少数据存储和计算的复杂性。 以下是一些常用的Python代码示例,用于数据预处理: 1. 使用Pandas读取和处理数据: ```python import pandas as pd # 读取CSV文件 data = pd.read_csv('data.csv') # 处理缺失值,使用均值填充 data.fillna(data.mean(), inplace=True) # 处理重复值 data.drop_duplicates(inplace=True) # 数据转换,标准化 data['feature'] = (data['feature'] - data['feature'].mean()) / data['feature'].std() # 数据规约,PCA降维 from sklearn.decomposition import PCA pca = PCA(n_components=2) data_reduced = pca.fit_transform(data) ``` 2. 使用Scikit-learn进行数据预处理: ```python from sklearn.preprocessing import Imputer, StandardScaler from sklearn.decomposition import PCA # 处理缺失值,使用均值填充 imputer = Imputer(strategy='mean') data_imputed = imputer.fit_transform(data) # 数据转换,标准化 scaler = StandardScaler() data_scaled = scaler.fit_transform(data_imputed) # 数据规约,PCA降维 pca = PCA(n_components=2) data_reduced = pca.fit_transform(data_scaled) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值