sklearn学习之--预处理数据
1.标准化,也成为曲俊致和方差按比例缩放
说明:什么是标准化 :数值减去均值,再除以标准差
什么是中心化:变量减去他们的均值
意义:数据中心化和标准化在回归分析中是取消由于量纲不同,自身变异或者数值相差较大一起的误差。
目的:通过中心化和标准化处理,得到均值为0,标准差为1的服从标准正态分布的数据。
数据集的标准化对scikit-learn中实现的大多是机器学习算法来说是常见的要求。如果个别特征或多或少看起来不是很像标准正态分布(具有0均值和单位方差),那么它的他们的表现可能会比较差。
在实际情况中,我们经常忽略特征的分布形状,直接经过去均值来对某个特征进行中心化,在通过初一非常亮特征的标准差进行缩放。
例如,在机器学习算法的目标函数例如(SVM的RBF内核或者线性模型的l1和l2正则化),许多学习算法目标函数的额基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。如果某个特征的方差比其他特征的大几个数量级,那么他就会在学习算法中占主导位置,导致学习器并不能如我们所期望的那样,从其他特征中学习。
函数scale为数组形状的数据集的标准化提供了一个快捷的实现
from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
X_scaled = preprocessing.scale(X_train)
#结果
array([[ 0. ..., -1.22..., 1.33...],
[ 1.22..., 0. ..., -0.26...],
[-1.22..., 1.22..., -1.06...]])
经过缩放后的数据具有零均值以及标准方差
X_scaled.mean(axis=0)
#结果
array([ 0., 0., 0.])
X_scaled.std(axis=0)
#结果
array([ 1., 1., 1.])
预处理模块还提供了一个实用类StandardScaler,它实现了转化器的API来计算训练集上的平均值和标准偏差,一遍以后能够在测试集上重新引用相同的变换。因此,这个 类适合用于sklearn,pipe.Plieline的早期步骤。计算平均值和标准差
from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler=preprocessing.StandarScaler().fit(X_train)
scaler.mean_ #均值结果 array([ 1. ..., 0. ..., 0.33...])
scaler.scale_ #缩放系数
1.1 将特征缩放至特定的范围内
一种标准化是将特征缩放到