Este projeto tem como objetivo prever a quantidade de calorias queimadas durante atividades físicas com base em características fisiológicas e dados da atividade. O modelo utiliza CatBoostRegressor com validação cruzada (K-Fold) e engenharia de atributos para melhorar a performance.
Arquivos utilizados:
train.csv: Conjunto de treino com as colunasid,Age,Height,Weight,Duration,Heart_Rate,Body_Temp,Sex,Calories.test.csv: Conjunto de teste com as mesmas colunas, excetoCalories.modelo1.py, modelo4.py, modelo3.py, modelo4.py: Diferentes versões, utilizando diferentes abordagens para a resolução do problema
- Carregamento dos dados de treino e teste.
- Engenharia de atributos combinando colunas numéricas com multiplicações cruzadas.
- Codificação da variável categórica
Sexpara uso com o CatBoost. - Treinamento de um modelo
CatBoostRegressorcom validação cruzada (KFold). - Avaliação com a métrica RMSE (Root Mean Squared Error).
- Aplicação de transformação logarítmica nos targets para melhorar a estabilidade do modelo.
- Geração de previsões no conjunto de teste.
- Criação do arquivo
submission002.csvpronto para submissão.
Foram adicionadas várias colunas derivadas da multiplicação entre pares de atributos numéricos, como por exemplo:
Age_Height=Age×HeightWeight_Duration=Weight×DurationHeart_Rate_Body_Temp=Heart_Rate×Body_Temp(opcional)
Essas features ajudam o modelo a capturar interações não-lineares entre os dados.
Parâmetros principais:
iterations=3000
learning_rate=0.02
depth=10
l2_leaf_reg=3
subsample=0.9
colsample_bylevel=0.75
early_stopping_rounds=30
loss_function='RMSE'A validação é feita com K-Fold Cross-Validation, usando 10 folds em uma das versões e 3 folds em outra. O RMSE de cada fold é impresso no console, além do RMSE final médio do modelo.
As previsões são revertidas da transformação logarítmica (np.expm1) e salvas no formato:
| id | Calories |
|---|---|
| 1 | 125.6 |
| 2 | 330.4 |
| ... | ... |
Certifique-se de instalar as dependências:
pip install pandas numpy scikit-learn catboostE então execute o script:
python nome_do_script.py