what is the difference between 'transform' and 'fit_transform' in sklearn
在sklearn python工具箱中,有两个关于
但是他们之间有什么区别呢?
在Scikit Learn Estimator API中,
查看本书的第4章&stackexchange的答案以获得更清晰的信息
这些方法用于对给定数据进行中心/特征缩放。它基本上有助于规范化特定范围内的数据
为此,我们使用z评分法。
我们在训练数据集上执行此操作。
1.fit():方法计算参数μ和σ,并将其保存为内部对象。
2.transform():使用这些计算参数的方法将转换应用于特定的数据集。
3.fit_transform():连接fit()和transform()方法来转换数据集。
功能缩放/标准化的代码段(在火车测试分割之后)。
1 2 3 4 | from sklearn.preprocessing import StandardScaler sc = StandardScaler() sc.fit_tranform(X_train) sc.tranform(X_test) |
我们在测试集上应用相同的(训练集相同的两个参数μ和σ(值))参数转换。
这里的区别只有已经在矩阵上计算了PCA时,才能使用PCA.Transform。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | In [12]: pc2 = RandomizedPCA(n_components=3) In [13]: pc2.transform(X) # can't transform because it does not know how to do it. --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-13-e3b6b8ea2aff> in <module>() ----> 1 pc2.transform(X) /usr/local/lib/python3.4/dist-packages/sklearn/decomposition/pca.py in transform(self, X, y) 714 # XXX remove scipy.sparse support here in 0.16 715 X = atleast2d_or_csr(X) --> 716 if self.mean_ is not None: 717 X = X - self.mean_ 718 AttributeError: 'RandomizedPCA' object has no attribute 'mean_' In [14]: pc2.ftransform(X) pc2.fit pc2.fit_transform In [14]: pc2.fit_transform(X) Out[14]: array([[-1.38340578, -0.2935787 ], [-2.22189802, 0.25133484], [-3.6053038 , -0.04224385], [ 1.38340578, 0.2935787 ], [ 2.22189802, -0.25133484], [ 3.6053038 , 0.04224385]]) |
如果您想使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | In [20]: pca = RandomizedPCA(n_components=3) In [21]: pca.fit(X) Out[21]: RandomizedPCA(copy=True, iterated_power=3, n_components=3, random_state=None, whiten=False) In [22]: pca.transform(z) Out[22]: array([[ 2.76681156, 0.58715739], [ 1.92831932, 1.13207093], [ 0.54491354, 0.83849224], [ 5.53362311, 1.17431479], [ 6.37211535, 0.62940125], [ 7.75552113, 0.92297994]]) In [23]: |
尤其是PCA变换将矩阵X的PCA分解得到的基的变化应用于矩阵Z。
方法之间的一般差异:
- fit(原始文档[,y]):学习原始文档中所有标记的词汇字典。
- fit_transform(raw_documents[,y]):学习词汇字典并返回术语文档矩阵。这相当于先进行拟合再进行转换,但更有效地实现了这一点。
- 转换(原始文档):将文档转换为文档术语矩阵。使用与fit匹配的词汇表或提供给构造函数的词汇表从原始文本文档中提取标记计数。
fit_transform和transform都返回相同的文档项矩阵。
来源