• 数据清洗


    数据清洗一是为了解决数据质量问题,二是让数据更适合做挖掘

    数值类数据

    缺失值

    在处理缺失值之前,首先要理解为什么数据会有缺失。

    丢弃

    直接丢弃含有缺失值的行或者列

    # 丢弃有缺失值的列
    df.dropna(axis=1,how='all'|'any',subset=[''])
    
    适用情况
    1. 错误导致的数据缺失(GSP中跑步速度的缺失)
    2. 要建模预测的数据列有数据缺失
    3. 无用数据(调查车辆的价格,要排除无车的样本)
    缺点
    1. 经常丢弃数据会导致Biased Models
    2. 人们不愿意分享的敏感数据(亲密关系、经济情况)导致缺失,如果直接丢弃会影响模型效率
    特殊情况

    如果一列中有大量数据缺失,可以建立一个只含01的列,来区分样本是否有数据缺失

    插值

    用统计值(平均数、众数、中位数)填充缺失值

    # 冒号:之前的a,b,c表示它们是这个函数的参数
    
    # 匿名函数不需要return来返回值,表达式本身结果就是返回值
    fill_mean = lambda col: col.fillna(col.mean())
    
    df[['A','B','D']].apply(fill_mean, axis=0)
    

    无论采用什么方法来插值,都需要小心Bias。尽管插值是一种常用的方法而且能让模型有更好的预测效果,但常常会导致模型过拟合。

    建模预测

    AMELIA library中包含很多运用机器学习和贝叶斯统计的方法来填补缺失值的方法

    目录类数据

    One-Hot Encoding

    有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。

    for col in cat_cols:
        df = pd.concat([df.drop(col,axis=1),pd.get_dummies(df[col],prefix=col,dummy_na=dummy_na,drop_first=True)],axis=1)
    
    

    好处

    • 易于翻译
    • 使非偏序关系的变量取值不具有偏序性

    缺点

    • 特征空间会变得非常大(可用PCA来减少维度)

    特殊情况

    [用回归模型时要少编码一类](

  • 相关阅读:
    【HDU6609】Find the answer【线段树】
    【HDU6602】Longest Subarray【线段树+分治】
    PCIe
    NVMe Windows 支持情况
    PCIe/NVMe Soft Protocol Analyzer
    I am coming..
    hibernate自动建表技术_采用数据库反向生成技术
    struts2的执行流程
    oracle中scott用户下四个基本表SQL语句练习
    SQL语句中的having和where的区别
  • 原文地址:https://www.cnblogs.com/JasonBUPT/p/11614141.html
Copyright © 2020-2023  润新知