03-特征预处理

2019-10-01  本文已影响0人  jxvl假装

特征的预处理:对数据进行处理。通过特定的统计方法(数学方法)将数据转换成算法要求的数据

两种方式:

  1. 归一化
  2. 标准化

数值型数据:标准缩放

  1. 归一化:通过对原始数据进行变换把数据映射到0-1之间。 在这里插入图片描述
    • 作用于:每一列
    • 什么时候进行归一化:当多个特征同等重要的时候,使得一个特征不会对最后的结果造成更大的影响,只适合传统精确小数据场景
    • 数据当中如果异常点较多,会有什么影响?:异常点对最大值最小值影响太大
    • 缺点:归一化对异常点的数据处理不是很好
  2. 标准化:使用最广泛的,通过对原始数据进行变换把数据变换到均值为0,标准差(方差开方)为1的范围内。作用于每一列。 公式见ppt74页
    • ps:由于数据量(较大)的关系,异常点对平均值的影响不大(公式里面用到了平均值)
    • 特点:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景
    • 缺失值:主要是用pandas进行处理
      • 如何处理:
        • 删除(结合数据量考虑,一般不考虑删除)
        • 填补:可以按行或按列,一般建议按列
      • sklearn中处理缺失值的类:Imputer。注意:数据必须是np.nan
        pandas中对缺失数据进行处理:pd.dropna,pd.fillna。注意:缺失值应为np.nan,float类型
from sklearn.preprocessing import MinMaxScaler


def mm():
    """
    归一化处理
    :return: None
    """
    mm = MinMaxScaler(feature_range=(0, 1))  # 参数的默认范围是0-1
    data = mm.fit_transform([[90, 2, 10, 40],
                             [60, 4, 15, 45],
                             [75, 3, 13, 46]]
                            )  # 注意:数据为2维列表形式
    print(data)


from sklearn.preprocessing import StandardScaler


def stand():
    """
    标准化缩放
    :return: None
    """
    std = StandardScaler()
    data = std.fit_transform([[1., -1., 3.],
                              [2., 4., 2.],
                              [4., 6., -1.]]
                             )  # 注意,2维数组
    print(data)  # 会发现每一列(每一个特征)的平均值都是0
    return None


from sklearn.impute import SimpleImputer
import numpy as np

def im():
    """
    缺失值处理
    :return: None
    """
    im = SimpleImputer(missing_values=np.nan, strategy="mean")
    data = im.fit_transform([[1, 2],
                      [np.nan, 3],
                      [7, 6]]
                     )
    print(data) #(1,0)位置为4
    return None


if __name__ == "__main__":
    # mm()
    # stand()
    im()
上一篇 下一篇

猜你喜欢

热点阅读