Discussão do artigo "Python, ONNX e MetaTrader 5: Montando um modelo RandomForest com pré-processamento de dados via RobustScaler e PolynomialFeatures"
future_pr = dataset['<CLOSE>'].iloc[i + rand] deveria ser: Caso contrário, você receberá um erro:
Uma referência de coluna incorreta em sua função labelling_relabeling_regression. Continuei recebendo erros porque você tenta acessar a coluna '<CLOSE>' em seu conjunto de dados, mas o pandas não consegue encontrá-la porque o nome correto da coluna é 'close', e não '<CLOSE>'. Sua sensibilidade a maiúsculas e minúsculas e os colchetes angulares adicionais fazem com que o pandas lance um KeyError .
É um erro muito simples, mas outra pessoa que esteja acompanhando o processo pode ficar confusa e desistir.
Como o restante do seu código está usando <CLOSE> ... provavelmente é melhor adicionar apenas uma linha como:
conjunto de dados = conjunto de dados.rename(colunas={'close': '<CLOSE>'})
Encontrei um erro no código:
deveria ser:
Caso contrário, você receberá um erro:
Referência de coluna incorreta em sua função labelling_relabelling_regression. Continuei recebendo erros porque você está tentando acessar a coluna '<CLOSE>' em seu conjunto de dados, mas o pandas não consegue encontrá-la porque o nome correto da coluna é 'close', não '<CLOSE>'. Devido à sensibilidade a maiúsculas e minúsculas e aos colchetes angulares extras, o pandas gera um KeyError.
Um erro muito simples, mas alguém que esteja passando por ele pode ficar confuso e desistir.
Como o restante do seu código usa <CLOSE> ... provavelmente é melhor adicionar apenas uma linha como:
conjunto de dados = conjunto de dados.rename(colunas={'close': '<CLOSE>'})
Muito obrigado, vou dar uma olhada, talvez eu tenha perdido isso ao editar o código!
Sem problemas, senhor. Mais uma recomendação: para as pessoas que não usam o Google Colab e trabalham em sua própria máquina ou no AWS ou algo assim, não é necessário importar o gdown
em vez disso, use o seguinte:
Primeiro:
Segundo:
substitua a seguinte seção
# Save the pipeline
joblib.dump(pipeline, 'rf_pipeline.joblib')
# Convert pipeline to ONNX
onnx_model = convert_sklearn(pipeline, initial_types=initial_type)
# Save the model in ONNX format
model_onnx_path = "rf_pipeline.onnx"
onnx.save_model(onnx_model, model_onnx_path)
# Save the model in ONNX format
model_onnx_path = "rf_pipeline.onnx"
onnx.save_model(onnx_model, model_onnx_path)
# Connect Google Drive (if you work in Colab and this is necessary)
from google.colab import drive
drive.mount('/content/drive')
# Specify the path to Google Drive where you want to move the model
drive_path = '/content/drive/My Drive/' # Make sure the path is correct
rf_pipeline_onnx_drive_path = os.path.join(drive_path, 'rf_pipeline.onnx')
# Move ONNX model to Google Drive
shutil.move(model_onnx_path, rf_pipeline_onnx_drive_path)
print('The rf_pipeline model is saved in the ONNX format on Google Drive:', rf_pipeline_onnx_drive_path) por:
print(f'O modelo rf_pipeline no formato ONNX é salvo localmente em: {local_onnx_path}')
o modelo será armazenado em uma subpasta chamada subdiretório /model. Isso também armazenará seu modelo como arquivo jplotlib, caso precise dele para o tempo de execução. Além disso, ambos os modelos podem ser executados diretamente do python para obter previsões.
Sem problemas, senhor. Outra recomendação é para aqueles que não usam o google colab e apenas executam em sua máquina ou no AWS, eles não precisam importar o gdown
Em vez disso, use o seguinte:
Em primeiro lugar:
.
Segundo:
substitua a seguinte seção
por:
print(f'O modelo rf_pipeline no formato ONNX é salvo localmente no endereço: {local_onnx_path}')
O modelo será armazenado no subdiretório /model. É também nesse local que o modelo será armazenado como um arquivo jplotlib, caso você precise dele em tempo de execução. Além disso, ambos os modelos podem ser executados diretamente do python para obter previsões.
Corrigido, enviei a versão do arquivo do tutorial ao moderador para aprovação.
Sim, ainda não cheguei ao aprendizado por reforço))))))
Por que o gradient bousting não foi usado como um algoritmo mais recente (já que você reclama que a floresta aleatória já é antiga)? Isso simplesmente aconteceu ou houve algum motivo? Acho que existe o bousting no sklearn.
Por que o gradient bousting não foi usado como um algoritmo mais recente (já que você reclama que a floresta aleatória já é antiga)? Isso simplesmente aconteceu ou houve algum motivo? Acho que existe o bousting no sklearn.
É só que a floresta foi escolhida como um exemplo simples (Boosting no próximo artigo, agora estou fazendo isso um pouco).
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Python, ONNX e MetaTrader 5: Montando um modelo RandomForest com pré-processamento de dados via RobustScaler e PolynomialFeatures foi publicado:
Neste artigo, vamos desenvolver um modelo de floresta aleatória usando Python. Vamos treinar esse modelo e salvá-lo como um pipeline ONNX, já incluindo etapas de pré-processamento de dados. Depois, esse modelo será aplicado diretamente no terminal do MetaTrader 5.
A floresta aleatória, também conhecida como RandomForest, constitui uma ferramenta essencial no campo do aprendizado de máquina. Para compreender seu funcionamento, podemos imaginar um grande grupo de indivíduos tomando decisões coletivas — no entanto, ao invés de pessoas, cada membro deste grupo é um classificador independente ou um avaliador da situação vigente. Nesse coletivo, os indivíduos são árvores de decisão, cada uma analisando características específicas para tomar suas decisões. A tomada de decisão na floresta aleatória segue um processo democrático de votação, onde cada árvore contribui com seu voto para formar a decisão final baseada na maioria.
Devido à sua versatilidade, a floresta aleatória é extensivamente aplicada em diversas áreas, sendo particularmente útil tanto para classificação quanto para regressão. Em tarefas de classificação, por exemplo, o modelo pode determinar a que categoria pertence uma situação específica, como no mercado financeiro, onde decide se uma ação deve ser comprada (classe 1) ou vendida (classe 0), com base em um conjunto de características.
Neste artigo, vamos explorar mais a fundo a tarefa de regressão. A regressão em aprendizado de máquina visa prever valores numéricos futuros, como preços de ações ou temperaturas, baseando-se em dados históricos. Diferente da classificação, que distribui objetos em categorias fixas, a regressão busca estimar valores numéricos específicos. Isso pode ser, por exemplo, prever os preços das ações no mercado financeiro, prever a temperatura ou qualquer outra variável numérica.
Autor: Yevgeniy Koshtenko