特征工程预处理(归一化,标准化,缺失值)

'''
特征预处理:通过特定的统计方法,将数据转换成算法要求的数据 。包括数据缺失,数据填充等
数值型数据:
    标准缩放:
        1、归一化:通过对原始数据进行变换把数据映射到(默认为0,1)之间;   
            计算公式:x' = (x-min)/(max-min) x'' = x'*(mx-mi)+mi 
            目的:使得某一个特征对最终结果不会造成更大的影响
            弊端:异常点对归一化的最大值最小值影响很大。
            适用场景:鲁棒性差,只适合小数据的场景(无异常数据)
            api:MinMaxScaler(feature_range=(2,4))
                    MinMaxScaler.fit_transform()
        2、标准化:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
            公式:x' = (x-mean)/a 其中mean为平均值;a为标准差
                    方差:var = ((x1-mean)^2 +(x2-mean)^2+ ....)/n ,其中var为方差,n为每个特征样本数 ;方差可以考量数据的稳定性
                    标准差:对方差开平方,即var^(1/2)
            优点:对异常点没有影响,适合嘈杂数据场景
            api:StandardScaler()
                    StandardScaler.fit_transform()
                    StandardScaler.mean_
                    StandardScaler.with_std
                    
        3、缺失值:主要使用pandas处理(np.nan为float类型) 
                    删除:(不建议) dropna()
                    填充:填充使用列的均值、中位数、众数  fillna()  
                    替换:replace("?",np.nan)
            Api:Imputer(missing_values='NaN',strategy="mean")
                    Imputer.fit_transform()  
类别型数据: one-hot编码

时间类型:  时间的切分

特征预处理Api:
    sklearn.preprocessing
    归一化Api:

'''
# 1. 最大最小归一化
# 2. 标准化
# 3. 缺失值处理

from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
import numpy as np


def mm():
    """
    归一化处理
    :return:None
    """
    """feature_range -- 指定归一化的范围,默认是[0,1]"""
    mm = MinMaxScaler(feature_range=(2,5))
    data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
    print(data)


def stand():
    """
    标准化缩放
    :return:None
    """
    """在已有样本足够多的情况下比较稳定,适合
        现代嘈杂大数据场景。
    """
    std = StandardScaler()
    data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
    print(data)


def im():
    """
    缺失值处理
    :return:
    """
    # NaN, nan
    im = Imputer(missing_values='NaN', strategy="mean", axis=0)
    """axis=0 -- 表示按照列进行取平均值"""
    data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
    print(data)

if __name__ == '__main__':
    mm()
    stand()
    im()

输出结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值