Prognose com RNA
Utilize bancos de dados de inventário florestal contínuo para prever o crescimento e a produção florestal. Utilize redes neurais artificiais para maior flexibilidade. Com este módulo, você poderá estimar volume, número de fustes, área basal, entre outras variáveis de interesse.
Parâmetros da Classe
AnnTrainer
AnnTrainer(df, y, *train_columns, iterator=None)
| Parâmetros | Descrição | 
|---|---|
| df | O dataframe contendo os dados processados do inventário florestal contínuo. | 
| y | A variável alvo para treinamento da RNA (Y), a variável na qual a RNA será treinada para prever. | 
| *train_columns | (*args) Nomes das colunas que serão usadas para treinar a rede neural artificial para que ela possa prever os valores de Y. Devem ser numéricas. | 
| iterator | (Opcional) Nome da coluna que contém o iterator. Uma rede neural artificial será ajustada para cada iterator. | 
Métodos da Classe
- save_dir = Diretório onde o arquivo 
.pklda RNA será salvo. 
| Métodos | Descrição | 
|---|---|
| .fit_model() | Ajusta o modelo usando *train_columns para prever a variável Y. | 
Estruturas da RNA
Serão testadas 6 diferentes estruturas de redes neurais artificiais. Apenas o resultado de 1 modelo será retornado. O modelo retornado será selecionado pela função de ranqueamento.
Para o modelo 'ann', o módulo sklearn.neural_network.MLPRegressor é utilizado.
AnnPredictor
AnnPredictor(pkl_file)
| Parâmetros | Descrição | 
|---|---|
| pkl_file | Diretório do arquivo .pkl que será utilizado para previsão. | 
Métodos da Classe
- Retorna a previsão de 
Ypara as colunas*args. As colunas*argsdevem ser as mesmas utilizadas em*train_columnspara o treinamento. 
Exemplo de Uso
A grande vantagem do uso de redes neurais artificiais na estimativa de variáveis florestais está na possibilidade de incluir um grande número de variáveis na previsão. No entanto, atualmente, as redes neurais deste módulo operam preferencialmente com variáveis contínuas. Por isso, ao se desejar utilizar variáveis categóricas, recomenda-se aplicar algum tipo de transformação, como o one-hot encoding, para convertê-las em formato numérico antes de inseri-las na rede.
Como exemplo, iremos usar uma adaptação dos dados obtidos por Arce e Dobner Jr. (2024) para Eucalyptus dunnii. A base de dados é composta por 81 parcelas permanentes, com idades variando entre 3 e 9 anos, medidas de forma contínua ao longo do tempo.
Primeiras 5 linhas do arquivo:
| Chave_Parcela | Area_m2 | Idade | N_ha | d médio | h médio | H dom | G_m2_ha | V_m3_ha | S | 
|---|---|---|---|---|---|---|---|---|---|
| 14401109002_P1 | 300 | 3 | 933 | 7,47 | 6,8 | 7,4 | 4,2 | 6,0 | 15,4 | 
| 14401109002_P1 | 300 | 4 | 933 | 10,3 | 10,1 | 10,8 | 8,0 | 24,5 | 15,4 | 
| 14401109002_P1 | 300 | 5 | 933 | 14,0 | 12,8 | 13,7 | 14,9 | 67,1 | 15,4 | 
| 14401109002_P1 | 300 | 6 | 933 | 14,1 | 14,5 | 15,4 | 15,1 | 77,2 | 15,4 | 
| 14401109002_P1 | 300 | 7 | 867 | 16,6 | 16,1 | 16,5 | 19,4 | 112,8 | 15,4 | 
Nesse caso, iremos utilizar as colunas "Idade", "N_ha", "d médio", "h médio", "H dom", "G_m2_ha" e "S" para prever o valor de "V_m3_ha".
| exemplo_previsao_rna.py | |
|---|---|
- Importa a classe 
AnnTrainereAnnPredictordo móduloforecast. - Importa 
pandaspara manipulação de dados. - Importa 
train_test_splitpara dividir dados em treino e validação. 
- Define o diretório onde estão os dados em formato 
xlsxsalvando na variávelpath. - Carrega os dados e salva na variável 
dados. - Salva 80% dos dados como dados de treino na variável 
dados_treinoe 20% dos dados como validação na variáveldados_validacao, mantendo uma seed de aleatoriedade igual a 42. - Cria uma variável chamada 
train_columnscontendo a lista de nomes de colunas que serão usadas para treino. - Instancia a classe 
AnnTrainersalvando na variávelann, passando os dados de treino, a colunaV_m3_hacomo variável a ser predita e a lista de colunas de trei - Ajusta o modelo de rna, salvando as métricas na variável 
metircse o arquivo.pklgerado no diretorio definido. 
Após isso, o modelo ajustado estara pronto para uso. Podemos testar a performance do nosso modelo utilizando ele para prever os dados de validação salvos em dados_validacao.
- Importa a função 
get_metricsdo móduloutilspara posterior cálculo de métricas. - Instancia a classe 
AnnPredictor, salvando na variávelpredictore passando o arquivo.pklgerado no ajuste da rna. - Cria a coluna 
V_m3_ha_predictedno DataFramedados_validacao, contendo a predição feita pela ann treinada para as colunas usadas no treinamento do dataframedados_validacao. - Usa a função 
get_metricspara obter as métricas entre os valores reaisV_m3_hae os valores preditosV_m3_ha_predicteddo DataFramedados_validacao. As métricas retornadas são: MAE (Mean Absolute Error), MAPE (Mean Absolute Percentage Error), MSE (Mean Squared Error), RMSE (Root Mean Squared Error), R² (Coeficiente de Determinação), EXP_VAR (Explained Variance Score) e ME (Mean Error). - Cria um DataFrame com as métricas de validação.
 
Saídas
Tabelas
metrics(1)
- Tabela com as métricas de performance da RNA no treinamento.
 
| Iterator | Model | MSE | RMSE | MAE | MAPE | R² | Explained Variance | Max Error | 
|---|---|---|---|---|---|---|---|---|
| Not used | V_m3_ha_ann_predictor | 32,29 | 5,68 | 3,05 | 4,23 | 0,99 | 0,99 | 0,14 | 
metrics_val(1)
- Tabela com as métricas de performance da RNA na validação.
 
| MAE | MAPE | MSE | RMSE | R² | Explained Variance | Mean Error | 
|---|---|---|---|---|---|---|
| 2,99 | 3,28 | 26,13 | 5,11 | 0,99 | 0,99 | 0,12 | 
Arquivos
V_m3_ha_ann_predictor.pkl(1)
- Arquivo 
.pklcontendo os parâmetros da RNA treinada. 
Referências
ARCE, JULIO EDUARDO; DOBNER JR., MARIO. (2024). Manejo e planejamento de florestas plantadas: com ênfase nos gêneros Pinus e Eucalyptus. Curitiba, PR: Ed. dos Autores, 419p.