В панели инструментов sklearn-python существуют две функции transform
и fit_transform
около sklearn.decomposition.RandomizedPCA
. Описание двух функций выглядит следующим образом
Но в чем разница между ними?
В панели инструментов sklearn-python существуют две функции transform
и fit_transform
около sklearn.decomposition.RandomizedPCA
. Описание двух функций выглядит следующим образом
Но в чем разница между ними?
Здесь разница вы можете использовать pca.transform только в том случае, если вы уже вычислили PCA на матрице
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]])
если вы хотите использовать .transform
, вам нужно научить правилу преобразования вашему pca
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 применяет изменение базиса, полученного при разложении PCA матрицы X, на матрицу Z.
В оценке scikit-learn api,
fit()
: используется для генерации параметров модели обучения из данных обучения
transform()
:
параметры, генерируемые методом fit()
, применяемые к модели для создания преобразованного набора данных.
fit_transform()
:
сочетание fit()
и transform()
api в том же наборе данных
Оформить заказ Глава 4 из этой книги и ответить stackexchange для большей ясности
Эти методы используются для центрирования/масштабирования данных. Это в основном помогает нормализовать данные в определенном диапазоне
Для этого мы используем метод Z-счета.
Мы делаем это на тренировочном наборе данных.
1. Fit(): метод вычисляет параметры μ и σ и сохраняет их как внутренние объекты.
2. Transform(): метод, использующий эти вычисленные параметры, применяет преобразование к определенному набору данных.
3. Fit_transform(): объединяет метод fit() и transform() для преобразования набора данных.
Фрагмент кода для масштабирования/стандартизации объектов (после train_test_split).
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)
Мы применяем одинаковые (обучающий набор те же два параметра μ и σ (значения)) преобразования параметров в нашем тестовом наборе.
Общая разница между методами:
И fit_transform, и transform возвращают одну и ту же матрицу термина документа.
Здесь основная разница между .fit()
и .fit_transform()
:
используется в контролируемом обучении, имеющем два объекта/параметра (x, y) чтобы соответствовать модели и сделать модель для запуска, где мы знаем, что то, что мы собираемся предсказать
использование в обучении без учителя с одним объектом/параметром (x), где мы не знаем, что мы собираемся предсказать.