A seguinte explicação é baseada na fit_transformda Imputerclasse, mas a idéia é a mesma para fit_transformoutras classes scikit_learn gosto MinMaxScaler.
transformsubstitui os valores ausentes por um número. Por padrão, esse número é o meio das colunas de alguns dados que você escolher. Considere o seguinte exemplo:
imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])
Agora, o imputador aprendeu a usar uma média (1 + 8) / 2 = 4,5 para a primeira coluna e média (2 + 3 + 5,5) / 3 = 3,5 para a segunda coluna, quando aplicada a dados de duas colunas:
X = [[np.nan, 11],
[4, np.nan],
[8, 2],
[np.nan, 1]]
print(imp.transform(X))
Nós temos
[[4.5, 11],
[4, 3.5],
[8, 2],
[4.5, 1]]
Portanto, fito imputador calcula as médias das colunas de alguns dados e transformaplica esses meios a alguns dados (que substitui apenas os valores ausentes pelos médios). Se esses dois dados forem os mesmos (ou seja, os dados para calcular as médias e os dados aos quais são aplicadas), você poderá usar o fit_transformque é basicamente a fitseguido por a transform.
Agora suas perguntas:
Por que precisamos transformar dados?
"Por várias razões, muitos conjuntos de dados do mundo real contêm valores ausentes, geralmente codificados como espaços em branco, NaNs ou outros espaços reservados. Esses conjuntos de dados, no entanto, são incompatíveis com os estimadores do scikit-learn que assumem que todos os valores em uma matriz são numéricos" ( fonte )
O que significa ajustar modelo em dados de treinamento e transformar em dados de teste?
O fitde um imputador não tem nada a ver com o fitusado no ajuste do modelo. Portanto, o uso do imputer fitnos dados de treinamento apenas calcula as médias de cada coluna de dados de treinamento. O uso transformde dados de teste substitui os valores ausentes dos dados de teste por meios que foram calculados a partir dos dados de treinamento.