zoukankan      html  css  js  c++  java
  • 数据清洗

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

    数值类数据

    缺失值

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

    丢弃

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

    # 丢弃有缺失值的列
    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来减少维度)

    特殊情况

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

  • 相关阅读:
    分形与数据结构第一篇(神奇的色子)
    画图小工具第二篇
    画图小工具第一篇
    图形界面第一篇
    回合制对战游戏第二篇
    回合对战制游戏第一篇(初识java)
    技术+态度+人品
    排序的一些方法(稳定性,内外排序,时间空间复杂度)
    暂时性死区
    vue传值(父子传值,非父子传值)
  • 原文地址:https://www.cnblogs.com/JasonBUPT/p/11614141.html
Copyright © 2011-2022 走看看