sklearn fit, fit_transform, transform的区别
介绍
图片摘自stackoverflow: what-is-the-difference-between-fit-fit-transform-and-transform
例一
from sklearn.preprocessing import StandardScaler ss = StandardScaler() # 方法一,分三步:训练模型 --> 处理训练样本 --> 处理测试样本 ss.fit(X_train) # 训练模型,以得到均值、标准差等参数 X_train = ss.transform(X_train) # 用该模型处理训练样本 X_test = ss.transform(X_test) # 用同一个模型处理测试样本 # 方法一,分两步:训练模型 & 处理训练样本 --> 处理测试样本 X_train = ss.fit_transform(X_train) # 训练模型,然后用该模型处理训练样本 X_test = ss.transform(X_test) # 用同一个模型处理测试样本
例二
import numpy as np from sklearn.manifold import TSNE X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]) tsne = TSNE(n_components=2) # 方法一:分两步,先训练模型,再从模型中去取出结果 tsne.fit(X) output = tsne.embedding_ # 方法一:一步到位,直接得到结果 output = tsne.fit_transform(X)
注意,有些方法有transform()函数,如例一中的StandardScaler,有些方法没有transform()函数,如例二中的TSNE。