1
resposta

O exemplo de validação cruzada usando GroupKFold está correto?

Foi correto informar o parâmetro groups para a função cross_validate com o valor dados.modelo na seguinte linha?

results = cross_validate(modelo, x_azar, y_azar, cv = cv, groups = dados.modelo, return_train_score=False)

Pergunto isso, pois o x_azar e y_azar são de dados ordenados com a função sort_values (baseados no dataframe da variável dados_azar) enquanto o dados.modelo está com a ordem original dos dados. Portanto, os dados contidos em dados.modelo não tem equivalência direta com os dados do dados_azar.

Caso exista realmente um equívoco, minha sugestão é criar a coluna modelo no dataframe dados_azar e passar dados_azar.modelo como parâmetro cv.

1 resposta

Olá Thiago.

Como os índices dos Dataframe vão se manter, entendo que não é um problema utilizar o groups = dados.modelo_carro.

Acessando o índice 10 do dados

dados.loc[10]

Temos esse veiculo:

preco              75668.4200
vendido                0.0000
idade_do_modelo        2.0000
km_por_ano         22635.3671
modelo_carro           6.0000
Name: 10, dtype: float64

E acessando o índice 10 do x_azar

x_azar.loc[10]

Temos esse veiculo:

preco              75668.4200
idade_do_modelo        2.0000
km_por_ano         22635.3671
Name: 10, dtype: float64

Então quando GroupKFold for buscar pelo grupo que ele pertence vai usar o índice para encontra-lo.

Espero ter ajudado, bons estudos.