《Python机器学习基础教程》笔记
一些算法,例如神经网络和SVM对数据缩放非常敏感,因此,通常的做法是对特征进行调节,使数据表示更适合于这些算法。Scikit-Learn中有4中数据变换方法,分别为:
1.StandardScaler:确保每个特征的平均值为0,方差为1,使所有特征都位于同一量级。
2.RobustScaler:工作原理与StandardScaler类似,但RobustScaler使用的是中位数和四分位数。
3.MinMaxScale:计算每个特征的范围(最大值 - 最小值),移动数据,使所有特征都刚好位于0到1之间。
4.Normalizer:将数据点投影到半径为1的圆上。
随便写两行代码示例一下用法:
scaler = MinMaxScaler()
X_scaled = scaler.transform(X)
这里用的是MinMaxScale方法,如果要用其他几种,则将MinMaxScale改为需要的缩放方式即可,如下:
scaler = StandardScaler()
scaler = RobustScaler()
scaler = Normalizer()
需要注意的是,使用MinMaxScale变换时,能保证训练集缩放到0到1之间,但测试集不一定在此范围。因为最小值和最大值是根据训练集定的,测试集的某些数据可能在此范围外。