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.