美文网首页
1. 数据预处理

1. 数据预处理

作者: 风图莫 | 来源:发表于2020-03-20 19:54 被阅读0次

目录

NO.1 ---Pandas数据处理

NO.2 ---数值型数据的处理

NO.3 ---离散化、分箱、分桶

NO.4 ---分类特征的处理

NO.5 ---处理样本分布不均衡

NO.6 ---数据抽样



NO.1 ---Pandas数据处理



      一 .缺失值的处理

                API

            1.直接删

                        如果缺失值比例比较大 30% ~40% 以上可以考虑删除

            2.填充

                        统计值 均值、加权均值、中位数等方填充

                        统计法

                        模型法: 对缺失数据进行预测

                        分类 众数

                        算法 LR 随机森林

           3. 数据缺失 有些时候也是一种特征,不见得一定要处理

                        以用户性别字段为例,男 女 未知 

        二. 异常值    


            判断异常值方法:Z-Score : 一个值 距离平均数多少个标准差

                        Z-Score = X-μ/σ 其中μ为总体平均值,X-μ为离均差,σ表示标准差

            如果是业务产生的异常值,根据具体的情况决定

                        删除/替换

            保留

                        异常值由运营活动导致,正常反映了业务运营结果

                        异常检测模型

                                如异常客户(羊毛党)识别,作弊流量检测,信用卡诈骗识别等

                        对异常值不敏感的数据模型

                        如决策树

        三. 重复值处理


    dataframe.duplicated()  # 判断重复数据记录

    dataframe.drop_duplicates() # 删除数据记录中所有列值相同的记录

    样本不均衡情况下

        分类模型,某个分类训练数据过少,可以采取简单复制样本的方法来增加样本数量

        需要故意重复值

    其它情况下 去重

NO.2 ---数值型数据的处理



        一. 归一化

    = (x-min)/(max-min)

    取值范围 [0,1]

    容易受到极值(异常值)影响

        **归一化Max-Min : 建立MinMaxScaler模型对象---->minmax_scaler**

        二. 标准化: x'=(x-mean)/std

    std是方差的算术平方根。离mean的实际距离,

    标准化之后的数据是以0为均值,方差为1的正态分布。但是Z-Score方法是一种中心化方法

    中心化: 所有(X-mean)的和相加等于0.

            5人的工资,分别为12000、5000、8000、3000、4000元,这5个数据作为一个独立的数据集,平均值为6400元,每个人的工资依次减去平均水平6400,得到5600、-1400、1600、-3400、-2400,新的5个数据其平均值等于0,这个过程就是数据的中心化

        标准化: StandardScaler对象--->zscore_scaler


        三. 什么时候用 标准化 归一化

knn或者树模型 不需要标准化 归一化

线性回归,逻辑回归 如果不同特征数据,数量级不一样 需要 就需要做标准化 归一化

a0x0 + a1x1+a2x2+....=Y

NO.3 ---离散化、分箱、分桶



对本来是连续的(数值型的)数据,分组,落在一组之内的数据,忽略差异

离散化/分箱需要注意

    尽量不要让每个箱中的样本差距过大

常见现针对连续数据化离散化的方法

    分位数法:使用四分位、五分位、十分位等分位数

    距离区间法:可使用等距区间或自定义区间的方式进行离散化

    频率区间法:将数据按照不同数据的频率分布进行排序,然后按照等频率或指定频率离散化,这种方法会把数据变换成均匀分布

    聚类法:例如使用K均值将样本集分为多个离散化的簇。

pandas.cut 自己制定分箱的边界pandas.qcut 等频分箱 尽量让每个箱的样本量一致


        API


    1.针对时间数据的离散化



2.针对连续数据的离散化:自定义分箱区间实现离散化


3.针对连续数据的离散化:使用聚类法实现离散化


5. 针对连续数据的二值化


NO.4 ---分类特征的处理



    one-hot编码

分类的特征中有一些字符串的数据,需要把字符串转换成数值型

使用one-hot 来表示分类特征,而不是用0,1,2来表示分类,避免算法把分类特征当做连续特征处理

    onehot处理

sklearn model_enc = OneHotEncoder()

fit_transform # 标志转换

只要丢进去的数据都会做onehot处理

    get_dummies (哑变量)处理非数值型的变量

get_dummies 只处理非数值型的特征

    时间类型数据处理

转换成pandas datetime类型

pd.to_datetime(car_sales['date_t'])

    利用datetime可以方便取出各种维度的时间信息

取出几月份: car_sales['date'].dt.month

取出来是几号: car_sales['date'].dt.day

取出一年当中的第几天: car_sales['date'].dt.dayofyear

取出星期几: car_sales['date'].dt.dayofweek

NO.5 ---处理样本分布不均衡



    样本分布不均衡易出现场景

    异常检测

    客户流失

    偶发事件

    过采样: 使用imblearn中的SMOTE

其通过增加分类中少数类样本的数量来实现样本均衡

model_smote.fit_sample(x, y) # 输入数据并作过抽样处理

返回特征和目标过采样之后的结果

处理之后需要把x,y拼成新的dataframe

    欠采样: 使用imblearn中RandomUnderSampler做

通过减少分类中多数类样本的数量来实现样本均衡

NO.6 ---数据抽样



(1)简单随机抽样

(2)等距抽样

                numpy.random.choice(a, size=None, replace=True, p=None)

(3)分层抽样 

思维导图



相关文章

网友评论

      本文标题:1. 数据预处理

      本文链接:https://www.haomeiwen.com/subject/adjsyhtx.html