预处理与缩放
一些算法,比如神经网络和SVM,对数据缩放非常敏感。需要对数据进行一种简单的按特征的缩放和移动。
1、不同类型的预处理
- 一个简单的二分类例子
📣
-
库:sklearn.preprocessing
-
StandardScaler:确保每个特征的平均值为0,方差为1。
-
RobustScaler:使用中位数和四分位数(四分之一),确保每个特征的统计属性都位于同一范围。
-
MinMaxScalar:移动数据,使所有特征都刚好位于0-1之间。
-
Normalizer:对每个数据点进行缩放,使得特征向量的欧式长度等于1。
举一个例子,使用MinMaxScaler
- 对测试集进行缩放的结果
📣
- 可以发现,对测试集进行缩放后的最大值不在[0,1]之间
- 这是因为,transform方法总是减去训练集的最小值,然后除以训练集的范围。
2、应用数据变换
- 将核SVM(svc)应用在cancer数据集上
3、一些注意事项
-
1、一定要对训练数据和测试数据进行相同的缩放
- 比如,使用MinMaxScaler缩放,需要调用fit对训练集进行拟合,然后调用transform对训练集和数据集进行变换。
-
2、预处理要先划分数据集,再通过对训练集的预处理模型,应用到测试集上
4、参考文献
《Pyhon机器学习基础教程》P100-P106