在机器学习之前,要对数据进行预处理,其中就包括特征工程。特征可以分为数值型特征,有序型特征和类别型特征,对不同的特征有不同的处理方法。
注意,在测试集上的scaler和训练集上的scaler要保持一致;不要在训练集和测试集分别使用不同的scaler
同理,对于One-Hot Encoding,也是一样,要保证测试集和训练集的encoder一致
数值型特征
什么是数值型特征
数值型特征包括长度、宽度、像素值等。
处理
数值型特征是可以直接使用的,那为什么还要进行处理?因为很多数值型的范围差距特别大,对某些模型来说我们就需要对数值范围进行标准化或归一化,这样可以提高模型的性能。如:线性回归,kNN,SVM,神经网络等
Sklearn 中有很多种scaler可以供选择,也就是对数据进行预处理的不同种方式。下面介绍两种scaler,归一化和标准化
归一化
1.什么是归一化
归一化是将此特征的最大值和最小值找到,然后将每个值都减去最小值再除以最大值和最小值的差,得到的值即归一化的值,归一化后范围都在0-1之间。数学公式如下图所示
2.在sklearn中进行归一化
导入归一化的模块minmaxscaler
from sklearn.preprocessing import MinMaxScaler
归一化MinMaxScaler()
scaler = MinMaxScaler()
对训练集进行归一化需要用fit
X_train_scaled = scaler.fit_transform(X_train)
对测试集进行归一化不用fit,因为是用训练集fit好的参数进行transform
X_tes