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。

原文地址:https://www.cnblogs.com/picassooo/p/13765885.html