Na caixa de ferramentas sklearn-python, existem duas funções transform
e fit_transform
sobre sklearn.decomposition.RandomizedPCA
. A descrição de duas funções é a seguinte
Mas qual é a diferença entre eles?
python
python-2.7
scikit-learn
tqjustc
fonte
fonte
est.fit_transform(X)
é sempre equivalente aest.fit(X).transform(X)
, mas geralmente mais rápido.Respostas:
Aqui, a diferença que você pode usar pca.transform apenas se você já tiver calculado o PCA em uma matriz
se você quiser usar
.transform
você precisa ensinar a regra de transformação para o seu pcaEm particular, a transformada PCA aplica a mudança de base obtida com a decomposição PCA da matriz X para a matriz Z.
fonte
fit_transform
é a combinação de duas funçõesfit
etransform
?Na API do estimador scikit-learn ,
fit()
: usado para gerar parâmetros de modelo de aprendizagem a partir de dados de treinamentotransform()
: parâmetros gerados a partir dofit()
método, aplicados no modelo para gerar o conjunto de dados transformado.fit_transform()
: combinação defit()
etransform()
api no mesmo conjunto de dadosVerifique o Capítulo 4 deste livro e responda pelo stackexchange para obter mais clareza
fonte
Esses métodos são usados para centralizar / dimensionar recursos de um dado dado. Basicamente, ajuda a normalizar os dados dentro de um determinado intervalo
Para isso, usamos o método Z-score.
Fazemos isso no conjunto de dados de treinamento.
1. Fit (): o método calcula os parâmetros μ e σ e os salva como objetos internos.
2. Transform (): o método que usa esses parâmetros calculados aplica a transformação a um conjunto de dados específico.
3. Fit_transform (): junta o método fit () e transform () para a transformação do conjunto de dados.
Fragmento de código para escalonamento / padronização de recursos (após train_test_split).
Aplicamos a mesma transformação de parâmetro (conjunto de treinamento com os mesmos dois parâmetros μ e σ (valores)) em nosso conjunto de teste.
fonte
Diferença genérica entre os métodos:
Ambos fit_transform e transform retornam a mesma matriz Document-term.
Fonte
fonte
Aqui, a diferença básica entre
.fit()
&.fit_transform()
:.em forma():
é utilizado na aprendizagem supervisionada tendo dois objetos / parâmetros (x, y) para ajustar o modelo e fazer o modelo rodar, onde sabemos que o que vamos predizer
.fit_transform ():
é usado na Aprendizagem Não Supervisionada tendo um objeto / parâmetro (x), onde não sabemos, o que iremos prever.
fonte
Em termos gerais, fit_transform significa fazer alguns cálculos e, em seguida, fazer a transformação (digamos, calcular a média das colunas de alguns dados e, em seguida, substituir os valores ausentes). Portanto, para o conjunto de treinamento, você precisa calcular e fazer a transformação.
Mas, para o conjunto de teste, o aprendizado de máquina aplica a previsão com base no que foi aprendido durante o conjunto de treinamento e, portanto, não precisa fazer cálculos, apenas realiza a transformação.
fonte
Por que e quando usar cada um:
Todas as respostas são muito boas, mas eu enfatizaria POR QUE e QUANDO usar cada método.
fit (), transform (), fit_transform ()
Normalmente, temos um problema de aprendizado supervisionado com (X, y) como conjunto de dados e o dividimos em dados de treinamento e dados de teste:
Imagine que estamos ajustando um tokenizer; se ajustarmos X, estaremos incluindo dados de teste no tokenizer, mas já vi esse erro muitas vezes!
O correto é ajustar SOMENTE com o X_train , porque você não conhece "seus dados futuros", então você não pode usar os dados do X_test para ajustar qualquer coisa!
Então você pode transformar seus dados de teste, mas separadamente, é por isso que existem métodos diferentes.
Dica final:
X_train_transformed = model.fit_transform(X_train)
equivale a:,X_train_transformed = model.fit(X_train).transform(X_train)
mas a primeira é mais rápida.Observe que o que eu chamo de "modelo" normalmente será um scaler, um transformador tfidf, outro tipo de vetorizador, um tokenizer ...
fonte