引自: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为需要代替的数据
八.相关性高的特征的处理
去除一些相关性高的特征---相关性特征太多的话可能会起到放大噪声的作用,多个特征瓜分了这类特征对模型的贡献,导致对数据变动更加敏感,泛化误差增大。
对变量的贡献的分析造成影响,衡量变量重要性存在困难。