一、特征处理
1.1 二元化
二元化
Binarizer
的原型为:class sklearn.preprocessing.Binarizer(threshold=0.0, copy=True)
threshold
:一个浮点数,它指定了转换阈值:低于此阈值的值转换为0,高于此阈值的值转换为 1。copy
:一个布尔值,指定是否拷贝数据。
方法:
fit(X[, y])
:不作任何事情,主要用于为流水线Pipeline
提供接口。transform(X[, copy])
:将每个样本的特征二元化。fit_transform(X[, y])
:将每个样本的特征二元化。
1.2 独热码
独热码
OneHotEncoder
的原型为:class sklearn.preprocessing.OneHotEncoder(n_values='auto', categorical_features='all',
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'
:忽略。
属性:
active_features_
:一个索引数组,存放转换后的特征中哪些是由独热码编码而来。仅当
n_values='auto'
时该属性有效。feature_indices_
:一个索引数组,存放原始特征和转换后特征位置的映射关系。第
i
个原始特征将被映射到转换后的[feature_indices_[i],feature_indices_[i+1])
之间的特征。n_values_
:一个计数数组,存放每个原始特征取值的种类。一般为训练数据中该特征取值的最大值加1,这是因为默认每个特征取值从零开始。
方法:
fit(X[, y])
:训练编码器。transform(X)
:执行独热码编码。fit_transform(X[, y])
:训练编码器,然后执行独热码编码。
1.3 标准化
1.3.1 MinMaxScaler
MinMaxScaler
实现了min-max
标准化,其原型为:class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True)
feature_range
:一个元组(min,max)
,指定了执行变换之后特征的取值范围。copy
:一个布尔值,指定是否拷贝数据。
属性:
min_
:一个数组,给出了每个特征的原始最小值的调整值。设特征 的原始最小值为 ,原始最大值为 。则特征 的原始最小值的调整值为: 。
scale_
:一个数组,给出了每个特征的缩放倍数 。data_min_
:一个数组,给出了每个特征的原始最小值 。data_max_
:一个数组,给出了每个特征的原始最大值。data_range_
:一个数组,给出了每个特征的原始的范围(最大值减最小值)。
方法:
fit(X[, y])
:计算每个特征的最小值和最大值,从而为后续的转换做准备。transform(X)
:执行特征的标准化。fit_transform(X[, y])
:计算每个特征的最大小值和最大值,然后执行特征的标准化。inverse_transform(X)
:逆标准化,还原成原始数据。partial_fit(X[, y])
:学习部分数据,计算每个特征的最小值和最大值,从而为后续的转换做准备。它支持批量学习,这样对于内存更友好。即训练数据并不是一次性学习,而是分批学习。
1.3.2 MaxAbsScaler
MaxAbsScaler
实现了max-abs
标准化,其原型为:class sklearn.preprocessing.MaxAbsScaler(copy=True)
copy
:一个布尔值,指定是否拷贝数据。
属性:
scale_
:一个数组,给出了每个特征的缩放倍数的倒数。max_abs_
:一个数组,给出了每个特征的绝对值的最大值。n_samples_seen_
:一个整数,给出了当前已经处理的样本的数量(用于分批训练)。
- 方法:参考
MinMaxScaler
。
1.3.3 StandardScaler
StandardScaler
实现了z-score
标准化,其原型为:class sklearn.preprocessing.StandardScaler(copy=True, with_mean=True, with_std=True)
copy
:一个布尔值,指定是否拷贝数据。with_mean
:一个布尔值,指定是否中心化。- 如果为
True
,则缩放之前先将每个特征中心化(即特征值减去该特征的均值)。 - 如果元素数据是稀疏矩阵的形式,则不能指定
with_mean=True
。
- 如果为
with_std
:一个布尔值,指定是否方差归一化。如果为
True
,则缩放每个特征到单位方差。
属性:
scale_
:一个数组,给出了每个特征的缩放倍数的倒数。mean_
:一个数组,给出了原始数据每个特征的均值。var_
:一个数组,给出了原始数据每个特征的方差。n_samples_seen_
:一个整数,给出了当前已经处理的样本的数量(用于分批训练)。
- 方法:参考
MinMaxScaler
。
1.4 正则化
Normalizer
实现了数据正则化,其原型为:class sklearn.preprocessing.Normalizer(norm='l2', copy=True)
norm
:一个字符串,指定正则化方法。可以为:'l1'
:采用 范数正则化。'l2'
:采用 范数正则化。'max'
:采用 范数正则化。
copy
:一个布尔值,指定是否拷贝数据。
方法:
fit(X[, y])
:不作任何事情,主要用于为流水线Pipeline
提供接口。transform(X[, y, copy])
:将每一个样本正则化为范数等于单位1。fit_transform(X[, y])
:将每一个样本正则化为范数等于单位1。