机器学习 数据预处理(特征值转化)

数据预处理(特征值转化)

1、简介

我们知道,MNIST数据集中的样本特征是从0-255的灰度值,0表示白,而255表示黑,中间的数值代表不同深度的灰色。通过除以255的操作,我们可以把所有的特征值限定到0-1之间,从而有利于模型计算,提高模型的准确率,这就是一种简单的数据预处理(data preprocessing)。数据预处理的方法有那些呢,请看下文。

Preprocessing data官方文档

2、预处理模型

  • Standardization

实质是将所有数据的特征转化为均值为0,而方差为1的状态,这样就可以确保数据的“大小”都是一致的,这样有利于模型的训练。

from sklearn.preprocessing import StandardScaler
# 可以用训练好的scaler去转换其他数据,这样它们就处于同样的分布下了
scaler = preprocessing.StandardScaler().fit(X)

 在以下这些算法中,特征值服的分布对机器学习的结果影响很大:

  • KNN
  • K-Means
  • SVM
  • PCA
  • RBF Kernel
  • Logistic regression
  • Linear discriminant analysis
  • l1 and l2 regularizers of linear models

只有基于树模型的算法是scale-invariant的,比如说决策树,随机深林等,数据的范围对模型的最终结果没有影响。

  • MinMaxScaler

实质将所有的数据压进了一个长和宽都是1的方格子中,这样会让模型的训练速度更快且准确率也会提高,在图像处理(image processing)中用到。

  • MaxAbsScaler

实质和Min-Max scaling一样将数值压缩到一定范围内[-1,1]。计算方法是将所有的特征值除以最大值;用在数值已经以0为中心(均值=0),或者稀疏数据中。

  • RobustScaler

实质利用中位数和四位数进行转化,特别称谓 “粗暴缩放”,他会直接把一些异常值踢出去,有点类似于我们的评委说 “去掉一个最高分,去掉一个最低分” 这样的情况;与standardScaler非常相似,但因为原理不同,所得到的结果也不同。

  • Normalizer

实质将所有样本的特征向量转化为欧几里得距离为1,也就是说,它把数据的分布变成一个半径为1的圆,或者一个球。Normalizer通常是在我们只想保留数据特征向量的方向,而忽略其数值的时候使用。Normalizer会将原始数据变的最面目全非的方法了。

  • Imputation of missing values

归置缺失值

sklearn.preprocessing.Imputer(
        missing_values='NaN',   # 识别确实值
        strategy='mean',        # 填充缺失值的策略为填充平均值
        axis=0, verbose=0, copy=True)
  • Generating polynomial features

丰富特征,一般在特征向量比较少的情况下使用,会把模型搞得复杂起来。

sklearn.preprocessing.PolynomialFeatures(
        degree=2, 
        interaction_only=False, 
        include_bias=True)

 生成多项的、相互影响的特征值。比如一个[a,b]两个特征的数据,用degree=2的PolynomialFeatures转换之后会变成[1, a, b, a^2, ab, b^2]这么多特征。

  • Custom transformers

自定义需要转化的格式

sklearn.preprocessing.FunctionTransformer(
        func=None, 
        inverse_func=None, 
        validate=True, 
        accept_sparse=False, 
        pass_y=False, kw_args=None, inv_kw_args=None)

                                                                   数据预处理的各方法总结

功能 说明
StandardScaler 无量纲化 标准化,基于特征矩阵的列,将特征值转换至服从标准正态分布
MinMaxScaler 无量纲化 区间缩放,基于最大最小值,将特征值转换到[0, 1]区间上
Normalizer 归一化 基于特征矩阵的行,将样本向量转换为“单位向量”
Binarizer 二值化 基于给定阈值,将定量特征按阈值划分
OneHotEncoder 哑编码 将定性数据编码为定量数据
Imputer 缺失值计算 计算缺失值,缺失值可填充为均值等
PolynomialFeatures 多项式数据转换 多项式数据转换
FunctionTransformer 自定义单元数据转换 使用单变元的函数来转换数据

猜你喜欢

转载自blog.csdn.net/u012089823/article/details/88726438