Discussão do artigo "Modelos de regressão da biblioteca Scikit-learn e sua exportação para ONNX"

 

Novo artigo Modelos de regressão da biblioteca Scikit-learn e sua exportação para ONNX foi publicado:

Neste artigo, exploraremos a aplicação de modelos de regressão do pacote Scikit-learn, tentaremos convertê-los para o formato ONNX e usaremos os modelos resultantes em programas MQL5. Além disso, compararemos a precisão dos modelos originais com suas versões ONNX para ambas as precisões float e double. Além disso, examinaremos a representação ONNX dos modelos de regressão, com o objetivo de fornecer uma melhor compreensão de sua estrutura interna e princípios operacionais.

Scikit-learn é uma das bibliotecas mais populares e amplamente utilizadas para aprendizado de máquina na comunidade Python. Ela oferece uma ampla gama de algoritimos, uma inrterface amigável e uma boa documentação O artigo anterior, "Modelos de Classificação da Biblioteca Scikit-learn e Sua Exportação para ONNX", abordou modelos de classificação.

Neste artigo, exploraremos a aplicação de modelos de regressão no pacote Scikit-learn, calcularemos seus parâmetros com precisão dupla para o conjunto de dados de teste, tentaremos convertê-los para o formato ONNX para precisão float e double, e usaremos os modelos obtidos em programas no MQL5. Além disso, compararemos a precisão dos modelos originais e suas versões ONNX para precisão float e double. Além disso, examinaremos a representação ONNX dos modelos de regressão, o que proporcionará uma melhor compreensão de sua estrutura interna e operação.

Autor: MetaQuotes

[Excluído]  

Qual pode ser o erro, registro:

2025.07.03 13:41:23.699 Core 1  2025.06.27 22:00:00   ONNX: Non-zero status code returned while running TreeEnsembleRegressor node. Name:'' Status Message: E:\workspace\external\onnx\onnx-runtime\src\core\framework\execution_frame.cc:173 onnxruntime::IExecutionFrame::GetOrCreateNodeOutputMLValue shape && tensor.Shape() == *shape was false. OrtValue shape verification failed. Current shape:{1} Requested shape:{1,1}

2025.07.03 13:41:23.699 Core 1  2025.06.27 22:00:00   ONNX: execute OnnxRun failed (OrtStatus: 6 'Non-zero status code returned while running TreeEnsembleRegressor node. Name:'' Mensagem de status: E:\workspace\external\onnx\onnx\onnx-runtime\src\core\framework\execution_frame.cc:173 onnxruntime::IExecutionFrame::GetOrCreateNodeOutputMLValue shape && tensor.S...'...'), inspect code 'ôU! fìV' (130:4)

Catboost regressor model:

const ulong output_shape[] = {1};
   if(!OnnxSetOutputShape(ExtHandle, 0, output_shape)) // Ошибки нет!
     {
      Print("OnnxSetOutputShape 2 error ", GetLastError());
      return(INIT_FAILED);
     }
vectorf out2(1);
   
OnnxRun(ExtHandle, ONNX_DEFAULT, f, out2); // Возникают вышеприведенные ошибки

Pelo que entendi, ele está reclamando da forma do tensor de saída (matriz). Mas ele está definido corretamente.