Подтвердить что ты не робот

В чем разница между "transform" и "fit_transform" в sklearn

В панели инструментов sklearn-python существуют две функции transform и fit_transform около sklearn.decomposition.RandomizedPCA. Описание двух функций выглядит следующим образом

enter image description hereenter image description here

Но в чем разница между ними?

4b9b3361

Ответ 1

Здесь разница вы можете использовать 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.

Ответ 2

В оценке scikit-learn api,

fit(): используется для генерации параметров модели обучения из данных обучения

transform():  параметры, генерируемые методом fit(), применяемые к модели для создания преобразованного набора данных.

fit_transform(): сочетание fit() и transform() api в том же наборе данных

введите описание изображения здесь

Оформить заказ Глава 4 из этой книги и ответить stackexchange для большей ясности

Ответ 3

Эти методы используются для центрирования/масштабирования данных. Это в основном помогает нормализовать данные в определенном диапазоне

Для этого мы используем метод Z-счета.

Z-Score

Мы делаем это на тренировочном наборе данных.

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)

Мы применяем одинаковые (обучающий набор те же два параметра μ и σ (значения)) преобразования параметров в нашем тестовом наборе.

Ответ 4

Общая разница между методами:

  • fit (raw_documents [, y]): Изучить словарный словарь всех токенов в необработанных документах.
  • fit_transform (raw_documents [, y]): выучить словарный словарь и вернуть матрицу документов-терминов. Это эквивалентно подгонке с последующим преобразованием, но более эффективно реализовано.
  • transform (raw_documents): преобразовать документы в матрицу условий документа. Извлечение токена происходит из необработанных текстовых документов с использованием словаря, снабженного соответствием, или словаря, предоставленного конструктору.

И fit_transform, и transform возвращают одну и ту же матрицу термина документа.

Источник

Ответ 5

Здесь основная разница между .fit() и .fit_transform():

.Поставить():

используется в контролируемом обучении, имеющем два объекта/параметра (x, y) чтобы соответствовать модели и сделать модель для запуска, где мы знаем, что то, что мы собираемся предсказать

.fit_transform():

использование в обучении без учителя с одним объектом/параметром (x), где мы не знаем, что мы собираемся предсказать.