AI - 数据处理 - fit、transform、fit_transform 区别

总结

  1. fit_transform = fit + transform 的组合,整个过程既包括了训练又包含了转换。fit_transform 对数据先拟合 fit,找到数据的整体指标,如均值、方差、最大值最小值等,然后对数据集进行转换transform,从而实现数据的标准化、归一化操作。
  2. 如果要想在 fit_transform 的过程中查看数据的分布,可以通过分解动作先 fit 再 transform,fit 后的结果就包含了数据的分布情况。如果不关心数据分布只关心最终的结果可以直接使用 fit_transform 一步到位。

  3. fit原义指的是安装、使适合的意思,其实有点train的含义,但是和train不同的是,它并不是一个训练的过程,而是一个适配的过程,过程都是确定的,最后得到一个可用于转换的有价值的信息。
  4. 常见使用方法:根据对之前训练数据 (trainData) 进行fit的整体指标,对测试数据(testData)使用同样的均值、方差、最大最小值等指标进行转换transform(testData),从而保证train、test处理方式相同。 
  5. 注意:
    • 必须先用fit_transform(trainData),之后再transform(testData)
    • 如果直接transform(testData),程序会报错
    • 如果fit_transfrom(trainData)后,使用fit_transform(testData)而不是transform(testData),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。(一定要避免这种情况)

 

另一个角度理解fit和transform

fit_transform是fit和transform的结合,所以只需要了解fit和transform。

transform方法主要用来对特征进行转换。

从可利用信息的角度来说,转换分为无信息转换和有信息转换。

无信息转换是指不利用任何其他信息进行转换,比如指数、对数函数转换等。
有信息转换从是否利用目标值向量又可分为无监督转换和有监督转换。
无监督转换指只利用特征的统计信息的转换,统计信息包括均值、标准差、边界等等,比如标准化、PCA法降维等。
有监督转换指既利用了特征信息又利用了目标值信息的转换,比如通过模型选择特征、LDA法降维等。
通过总结常用的转换类,我们得到下表:

 

所以,只有有信息的转换类的fit方法才实际有用,显然fit方法的主要工作是获取特征和目标值有价值的信息,在这点上,fit方法和模型训练时的fit方法就能够联系在一起了:**都是通过分析特征和目标值,提取有价值的信息。对于转换类来说是某些统计量;对于模型来说可能是特征的权值系数等。

另外,只有有监督的转换类的fit和transform方法才需要特征和目标值两个参数,即有监督学习的算法fit(x,y)传两个参数。
无监督学习的算法是fit(x),即传一个参数,比如降维、特征提取、标准化。
fit方法无用不代表其没实现,而是除合法性校验以外,其并没有对特征和目标值进行任何处理。

参考文献

fit_transform,fit,transform区别和作用详解!:https://blog.csdn.net/weixin_38278334/article/details/82971752

做数据处理,你连 fit、transform、fit_transform 都分不清?:https://blog.csdn.net/wzg199538/article/details/122204506?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-122204506-blog-82971752.235^v43^pc_blog_bottom_relevance_base2&spm=1001.2101.3001.4242.2&utm_relevant_index=4

 

posted on 2024-07-21 23:22  frank_cui  阅读(20)  评论(0编辑  收藏  举报

导航

levels of contents