本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍在sklearn中使用数据归一化。
01
对测试进行归一化?
前面我们将数据集划分成训练集以及测试集。用训练集来训练模型,测试集来验证模型的性能。但是有时候,样本中的每个特征之间的量纲不同,训练模型时候可能会导致某些特征的权重比较大,因此我们引入了归一化操作。
比如此时使用的是均值方差归一化,在训练集上,我们得到了均值归一化所需要的样本均值mean_train以及样本方差std_train。由于模型是通过均值归一化后的训练集训练得到,所以要想更好的验证模型的性能,测试集上同样要使用归一化的操作。现在的问题就是对于测试集,如何进行归一化的处理呢?可能有下面两种可能处理方案:
第一种方案是不对的,第二种方案才是正确的方案。也就是我们使用的归一化定义是(X_test - mean_train ) / std_train 来得到测试集的归一化结果。
为什么要这样做呢,有下面几个原因:
通过上面的介绍,可以看出,我们需要保存在训练集上计算的均值和方差。
02
Sklearn中的归一化
sklearn为我们封装好了归一化的操作。sklearn为了统一接口,将Scalar(归一化)这个类和机器学习算法这个类,他们整体的使用流程是一致的。下图就是sklearn封装Scalar这个类的使用流程:
当训练集传入Scaler中,这个Scaler也有一个fit,这个fit算法就是求出训练数据集对应的一些统计指标,比如,对于均值方差归一化来说,fit操作之后,就求出了训练集的均值和方差,之后Scaler中保存了关键的信息,如果再来其他样例之后,Scaler就可以非常简单的对输入样例进行transform得到相应的输出结果。
其实对比机器学习算法,只是将机器学习算法中的predict改成了transform。有了transform,我们就可以方便使用Scaler对后续的样本进行归一化,进而送入机器学习的算法中来训练预测处理。
具体使用sklearn进行数据归一化操作如下:
03
创建自己的归一化类
本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!