http://www.javashuo.com/article/p-byhobizo-dc.htmlhtml
写在前面
fit和transform没有任何关系,仅仅是数据处理的两个不一样环节,之因此出来fit_transform这个函数名,仅仅是为了写代码方便,会高效一点。算法
sklearn里的封装好的各类算法使用前都要fit,fit相对于整个代码而言,为后续API服务。fit以后,而后调用各类API方法,transform只是其中一个API方法,因此当你调用transform以外的方法,也必需要先fit。app
fit原义指的是安装、使适合的意思,其实有点train的含义,可是和train不一样的是,它并非一个训练的过程,而是一个适配的过程,过程都是肯定的,最后获得一个可用于转换的有价值的信息。函数
fit,transform,fit_transform经常使用状况分为两大类工具
#(fit(x,y)传两个参数的是有监督学习的算法,fit(x)传一个参数的是无监督学习的算法,好比降维、特征提取、标准化)
1. 数据预处理中方法
fit(): Method calculates the parameters μ and σ and saves them as internal objects.
--解释:简单来讲,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。学习
transform(): Method using these calculated parameters apply the transformation to a particular dataset.
--解释:在fit的基础上,进行标准化,降维,归一化等操做(看具体用的是哪一个工具,如PCA,StandardScaler等)。测试
fit_transform(): joins the fit() and transform() method for transformation of dataset.
--解释:fit_transform是fit和transform的组合,既包括了训练又包含了转换。
transform()和fit_transform()两者的功能都是对数据进行某种统一处理(好比标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等).net
fit_transform(trainData)对部分数据先拟合fit,找到该part的总体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),而后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。orm
根据对以前部分trainData进行fit的总体指标,对剩余的数据(testData)使用一样的均值、方差、最大最小值等指标进行转换transform(testData),从而保证train、test处理方式相同
htm