Bom dia Maikon, tudo bem? Espero que sim!
O objetivo do SelectKBest é selecionar as melhores features para construção do modelo. Portanto ele vai vasculhar os dados e ver quais são as colunas (features) que tem uma melhor relação com o target (variável de saída).
Quando você faz o selecionar_kmelhores.fit(treino_x, treino_y), o SelectKBest vai devolver as features com melhor relação, você pode checar quais são da seguinte forma:
print("Feature selection", selecionar_kmelhores.get_support())
print("Feature scores", selecionar_kmelhores.scores_)
print("Selected features:", list(X.columns[selecionar_kmelhores.get_support()]))
print("Removed features:", list(X.columns[~selecionar_kmelhores.get_support()]))
Após isso, você usa o transform para usar somente as colunas que o SelectKBest selecionou. Ou seja:
treino_kbest = selecionar_kmelhores.transform(treino_x)
teste_kbest = selecionar_kmelhores.transform(teste_x)
Vai te devolver os dados somente com as colunas que o SelectKBest selecionou. Antes de fazer esse código, o treino_x e treino_y não são atualizados, somente foram usados no SelectKBest para ver as colunas que são melhores.
Assim fica salvo em treino_kbest e teste_kbest somente as os dados com as colunas relevantes.
Espero que tenha tirado sua dúvida.
Estou à disposição. Bons estudos!