zoukankan      html  css  js  c++  java
  • 机器学习-特征处理

    引自:https://www.cnblogs.com/xiaorui111/p/10907224.html

     一.预处理的作用

    在机器学习任务中,学习器都会对数据有一定的要求,比如在最近邻算法中,我需要寻找与中心点最近邻的点,假设我们使用欧式距离度量,如果有一个属性值是千万量级,而另一个属性是100以内,那么如此计算的距离会严重依赖于大量级的属性,这对最后模型结果是有很大的影响的。总之,预处理的目的就是为了能够让学习器得到“干净”的数据。

    二.归一化

    通过原始数据进行变换把数据映射到(默认为[0,1])之间,作用于每一列将性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现。

    • 公式: max,min为一列最大,最小值
    • API: sklearn.preprocessing.MinMaxScaler
    • 相关语法:
    MinMaxScaler(feature_range=(0,1),......).fit_transform(x)
    ###feature_range设置缩放给定的范围;x为所需要处理的数据集
    
    • 缺点:在特定的场景下最大值最小值是变化的,易受异常点的影响,只适用精确小数据

    三.标准化

    当个体特征太过或明显不遵从高斯正态分布时,标准化表现的效果较差。实际操作中,经常忽略特征数据的分布形状,移除每个特征均值,划分离散特征的标准差,从而等级化,进而实现数据中心化。通过对原始数据进行变换把数据变换到均值为0,标准差为1的范围内(作用于每一列)。

    • 公式:
    • API: sklearn.preprocessing.StandardScaler
    • 相关语法:
    StandardScaler().fit_transform(x)   ###实例化,并转换数据
    StandardScaler.mean_   ###查看原始数据中每列平均值
    StandardScaler.var_    ###查看原始数据中每列方差
    

    四.正则化

    正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。
    该方法是文本分类和聚类分析中经常使用的向量空间模型(Vector Space Model)的基础.
    Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。

    • p-范数的计算公式:||X||p=(|x1|p+|x2|p+...+|xn|p)1/p
    • API: sklearn.preprocessing.Normalizer
    • 相关语法:
    Normalizer().fit_transform(x)    ###实例化,并转换数据
    

    五.二值化

    特征的二值化主要是为了将数据特征转变成boolean变量。在sklearn中,sklearn.preprocessing.Binarizer函数可以实现这一功能,Binarizer函数也可以设定一个阈值,结果数据值大于阈值的为1,小于阈值的为0。

    • API: sklearn.preprocessing.Binarizer
    • 相关语法:
    Binarizer().fit_transform(x)    ###实例化,并转换数据
    

    六.Onehot编码

    在建模过程中,我们通常会碰到各种类型的属性,如果是标称型属性,也就是不具备序列性、不能比较大小的属性,通常我们不能用简单的数值来粗暴替换。因为属性的数值大小会影响到权重矩阵的计算,不存在大小关系的属性,其权重也不应该发生相应的变化,那么我们就需要用到One-hot编码(也有人称独热编码)这种特殊的编码方式了。

    • API: sklearn.preprocessing.OneHotEncoder
    • 相关语法:
    OneHotEncoder().fit_transform(x)    ###实例化,并转换数据
    

    七.缺失值的处理

    由于各种原因,许多现实的数据集包含缺失值,通常变为为空白、NaN或其他占位符。使用不完整数据集的基本策略是丢弃包含缺失值的整行或整列,然而这样会丢失可能有价值的数据。一个更好的策略就是从已知的部分数据中推断出缺失值。
    Imputer类提供了基本的策略来填充缺失值,可以用行或者列的均值、中位数或众数来填充缺失值。

    • API: sklearn.preprocessing.imputer
    • 相关语法:
    imputer(missing_values=, strategy= ,axis=1.......)  
    ###missing_values为缺失的数据,strategy为需要代替的数据

    八.相关性高的特征的处理

    去除一些相关性高的特征---相关性特征太多的话可能会起到放大噪声的作用,多个特征瓜分了这类特征对模型的贡献,导致对数据变动更加敏感,泛化误差增大。

    对变量的贡献的分析造成影响,衡量变量重要性存在困难。

     
  • 相关阅读:
    HDU 1017—A Mathematical Curiosity
    N !
    L
    J
    Danganronpa
    A water problem
    hdu 5461 Largest Point
    India and China Origins hdu 5652 (BFS+二分)
    D (多校训练三) poj1919 (二分)
    Discovering Gold lightoj 1030 (dp+期望)
  • 原文地址:https://www.cnblogs.com/lyp1010/p/14056114.html
Copyright © 2011-2022 走看看