# what is the difference between 'transform' and 'fit_transform' in sklearn

In the sklearn-python toolbox, there are two functions `transform` and `fit_transform` about `sklearn.decomposition.RandomizedPCA`. The description of two functions are as follows  But what is the difference between them ?

Here the difference you can use pca.transform only if you have already computed PCA on a matrix

```       In : pc2 = RandomizedPCA(n_components=3)

In : 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 : pc2.ftransform(X)
pc2.fit            pc2.fit_transform

In : pc2.fit_transform(X)
Out:
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]])
```

if you want to use `.transform` you need to teach the transformation rule to your pca

```    In : pca = RandomizedPCA(n_components=3)

In : pca.fit(X)
Out:
RandomizedPCA(copy=True, iterated_power=3, n_components=3, random_state=None,
whiten=False)

In : pca.transform(z)
Out:
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 :
```

In particular PCA transform apply the change of basis obtained with the PCA decomposition of the matrix X to the matrix Z.

From: stackoverflow.com/q/23838056