一、特征处理

1.1 二元化

  1. 二元化Binarizer 的原型为:

    1. class sklearn.preprocessing.Binarizer(threshold=0.0, copy=True)
    • threshold:一个浮点数,它指定了转换阈值:低于此阈值的值转换为0,高于此阈值的值转换为 1。
    • copy:一个布尔值,指定是否拷贝数据。
  2. 方法:

    • fit(X[, y]) :不作任何事情,主要用于为流水线Pipeline 提供接口。
    • transform(X[, copy]) :将每个样本的特征二元化。
    • fit_transform(X[, y]) :将每个样本的特征二元化。

1.2 独热码

  1. 独热码OneHotEncoder 的原型为:

    1. class sklearn.preprocessing.OneHotEncoder(n_values='auto', categorical_features='all',
    2. dtype=<class 'float'>, sparse=True, handle_unknown='error')
    • n_values:字符串'auto',或者一个整数,或者一个整数的数组,它指定了样本每个特征取值的上界(特征的取值为从0开始的整数):

      • 'auto':自动从训练数据中推断特征值取值的上界。
      • 一个整数:指定了所有特征取值的上界。
      • 一个整数的数组:每个元素依次指定了每个特征取值的上界。
    • categorical_features :字符串'all',或者下标的数组,或者是一个mask,指定哪些特征需要独热码编码 :

      • 'all':所有的特征都将独热码编码。
      • 一个下标的数组:指定下标的特征将独热码编码。
      • 一个mask:对应为True的特征将编码为独热码。

      所有的非categorical 特征都将被安排在categorical 特征的右边。

    • dtype:一个类型,指定了独热码编码的数值类型,默认为np.float

    • sparse:一个布尔值,指定编码结果是否作为稀疏矩阵。

    • handle_unknown:一个字符串,指定转换过程中遇到了未知的 categorical 特征时的异常处理策略。可以为:

      • 'error':抛出异常。
      • 'ignore':忽略。
  2. 属性:

    • active_features_:一个索引数组,存放转换后的特征中哪些是由独热码编码而来。

      仅当n_values='auto'时该属性有效。

    • feature_indices_:一个索引数组,存放原始特征和转换后特征位置的映射关系。

      i 个原始特征将被映射到转换后的[feature_indices_[i],feature_indices_[i+1]) 之间的特征。

    • n_values_:一个计数数组,存放每个原始特征取值的种类。

      一般为训练数据中该特征取值的最大值加1,这是因为默认每个特征取值从零开始。

  3. 方法:

    • fit(X[, y]) :训练编码器。
    • transform(X) :执行独热码编码。
    • fit_transform(X[, y]) :训练编码器,然后执行独热码编码。

1.3 标准化

1.3.1 MinMaxScaler

  1. MinMaxScaler实现了min-max标准化,其原型为:

    1. class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True)
    • feature_range:一个元组(min,max),指定了执行变换之后特征的取值范围。
    • copy:一个布尔值,指定是否拷贝数据。
  2. 属性:

    • min_:一个数组,给出了每个特征的原始最小值的调整值。

      设特征 一、特征处理 - 图1 的原始最小值为 一、特征处理 - 图2 ,原始最大值为 一、特征处理 - 图3 。则特征 一、特征处理 - 图4 的原始最小值的调整值为: 一、特征处理 - 图5

    • scale_:一个数组,给出了每个特征的缩放倍数 。

    • data_min_:一个数组,给出了每个特征的原始最小值 。

    • data_max_:一个数组,给出了每个特征的原始最大值。

    • data_range_:一个数组,给出了每个特征的原始的范围(最大值减最小值)。

  3. 方法:

    • fit(X[, y]) :计算每个特征的最小值和最大值,从而为后续的转换做准备。

    • transform(X) :执行特征的标准化。

    • fit_transform(X[, y]) :计算每个特征的最大小值和最大值,然后执行特征的标准化。

    • inverse_transform(X):逆标准化,还原成原始数据。

    • partial_fit(X[, y]) :学习部分数据,计算每个特征的最小值和最大值,从而为后续的转换做准备。

      它支持批量学习,这样对于内存更友好。即训练数据并不是一次性学习,而是分批学习。

1.3.2 MaxAbsScaler

  1. MaxAbsScaler 实现了max-abs 标准化,其原型为:

    1. class sklearn.preprocessing.MaxAbsScaler(copy=True)
    • copy:一个布尔值,指定是否拷贝数据。
  2. 属性:

    • scale_:一个数组,给出了每个特征的缩放倍数的倒数。
    • max_abs_:一个数组,给出了每个特征的绝对值的最大值。
    • n_samples_seen_:一个整数,给出了当前已经处理的样本的数量(用于分批训练)。
  3. 方法:参考MinMaxScaler

1.3.3 StandardScaler

  1. StandardScaler实现了 z-score标准化,其原型为:

    1. class sklearn.preprocessing.StandardScaler(copy=True, with_mean=True, with_std=True)
    • copy:一个布尔值,指定是否拷贝数据。

    • with_mean:一个布尔值,指定是否中心化。

      • 如果为True,则缩放之前先将每个特征中心化(即特征值减去该特征的均值)。
      • 如果元素数据是稀疏矩阵的形式,则不能指定with_mean=True
    • with_std:一个布尔值,指定是否方差归一化。

      如果为True,则缩放每个特征到单位方差。

  2. 属性:

    • scale_:一个数组,给出了每个特征的缩放倍数的倒数。
    • mean_:一个数组,给出了原始数据每个特征的均值。
    • var_:一个数组,给出了原始数据每个特征的方差。
    • n_samples_seen_:一个整数,给出了当前已经处理的样本的数量(用于分批训练)。
  3. 方法:参考MinMaxScaler

1.4 正则化

  1. Normalizer 实现了数据正则化,其原型为:

    1. class sklearn.preprocessing.Normalizer(norm='l2', copy=True)
    • norm:一个字符串,指定正则化方法。可以为:

      • 'l1':采用 一、特征处理 - 图6 范数正则化。
      • 'l2':采用 一、特征处理 - 图7 范数正则化。
      • 'max':采用 一、特征处理 - 图8 范数正则化。
    • copy:一个布尔值,指定是否拷贝数据。
  2. 方法:

    • fit(X[, y]) :不作任何事情,主要用于为流水线Pipeline 提供接口。
    • transform(X[, y, copy]) :将每一个样本正则化为范数等于单位1。
    • fit_transform(X[, y]) :将每一个样本正则化为范数等于单位1。