Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 485

 
Mickey Moose:
É possível ensinar uma máquina a reconhecer imagens?

???

não tens o google?

 
mytarmailS:

???

não tens o google?

Então és incapaz de fazer isso?
 
Mickey Moose:
Então não és capaz de o fazer?

Eu posso...

De onde é que isso veio? E a sua pergunta era sobre outra coisa, a propósito.

 

Pergunta para especialistas. Porque é que a saída de buffer para a impressora, mas a linha não quer ser desenhada, nem é chamada por outro indicador????

 
mytarmailS:

Eu posso...

De onde é que isso veio? E a sua pergunta era sobre outra coisa, a propósito.


Da sua resposta.

Quero construir um módulo de reconhecimento de padrões no meu robô, escrito em µl, e estou tentando descobrir o que colocar nele e em que ele deve consistir.

e se você me enviar para o google eu concluirei que é impossível (na sua versão)

 
Mickey Moose:


qualquer classificador, a imagem é representada como uma matriz

Qual é o problema? Ou queres que te escreva um código?

 
mytarmailS:
qualquer classificador, a imagem é representada como uma matriz

Qual é o problema? Ou queres que te escreva um código?

Eu quero entender o que você precisa para definir os parâmetros de reconhecimento com o que procurar e como é chamado. Exactamente as descrições das ferramentas
 
Mickey Moose:
Eu quero entender o que é preciso para definir os parâmetros de reconhecimento com o que procurar e como se chama. Exactamente as descrições das ferramentas
Podes ir aqui, talvez compreendas o que é o quê.

Cumprimentos.
 

https://www.youtube.com/channel/UCPk8m_r6fkUSYmvgCBwq-sw/videos

Um curso sobre neurônica para reconhecimento de imagem, vídeos de palestras universitárias. Muito bem, mas em inglês.

 

Pergunta: A saída de RF normalmente dá ao AVGerr e ao RMSerr na região de

0.0000921245

0.0000920833

0.0000926474

0.0000930916

É AVGerr.

Porquê tantos zeros? Já vi em artigos que os erros são normalmente 0.1, 0.9, etc.

Calculado desta forma:

static double CDForest::DFAvgError(CDecisionForest &df,CMatrixDouble &xy,
                                   const int npoints)
  {
//--- create variables
   double result=0;
   int    i=0;
   int    j=0;
   int    k=0;
   int    i_=0;
//--- creating arrays
   double x[];
   double y[];
//--- allocation
   ArrayResizeAL(x,df.m_nvars);
   ArrayResizeAL(y,df.m_nclasses);
//--- initialization
   result=0;
   for(i=0;i<=npoints-1;i++)
     {
      //--- copy
      for(i_=0;i_<=df.m_nvars-1;i_++)
         x[i_]=xy[i][i_];
      //--- function call
      DFProcess(df,x,y);
      //--- check
      if(df.m_nclasses>1)
        {
         //--- classification-specific code
         k=(int)MathRound(xy[i][df.m_nvars]);
         for(j=0;j<=df.m_nclasses-1;j++)
           {
            //--- check
            if(j==k)
               result=result+MathAbs(y[j]-1);
            else
               result=result+MathAbs(y[j]);
           }
        }
      else
        {
         //--- regression-specific code
         result=result+MathAbs(y[0]-xy[i][df.m_nvars]);
        }
     }
//--- return result
   return(result/(npoints*df.m_nclasses));
  }

E aqui está um script de teste para calcular a tabela de multiplicação (tabela de RF de ensino):

#include <Math\Alglib\dataanalysis.mqh>
//+------------------------------------------------------------------+
#define _rand(min,max) ((rand()/(double)SHORT_MAX)*((max)-(min))+min)
//+------------------------------------------------------------------+
void OnStart()
{
   CDecisionForest      Trf;
   CDecisionForestShell RFshell;
   CMatrixDouble        PatternsMatrix;
   CDFReport            RF_report;
   int RFinfo;
   double vector[2], out[1];
   
   // подготовка данных
   PatternsMatrix.Resize(100,3);
   int m=0;     // first pattern
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         PatternsMatrix[m].Set(0,i/10.0);       // input 1
         PatternsMatrix[m].Set(1,j/10.0);       // input 2
         PatternsMatrix[m].Set(2,(i*j)/100.0);  // target
         m++; //next pattern
      }
   // создание RF
   CDForest::DFBuildRandomDecisionForest(PatternsMatrix,100,2,1,500,1,RFinfo,Trf,RF_report);
   Print("Info=",RFinfo,"  Error=",DoubleToString(CDForest::DFAvgError(Trf,PatternsMatrix,100),50));  
   // проверка сети на целочисленных данных
   string s="Тест 1 >> ";
   for(int i=1; i<=10; i++)
   {
      int d1=(int)_rand(1,10), d2=(int)_rand(1,10);
      vector[0]=d1/10.0;
      vector[1]=d2/10.0;
      CDForest::DFProcess(Trf,vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0]*100,0)+" // ";
   }
   Print(s);
   // проверка сети на дробныx данных
   s="Тест 2 >> ";
   for(int i=1; i<=5; i++)
   {
      double d1=NormalizeDouble(_rand(1,10),1), d2=NormalizeDouble(_rand(1,10),1);
      vector[0]=d1/10.0;
      vector[1]=d2/10.0;
       CDForest::DFProcess(Trf,vector,out);
      s+=DoubleToString(d1,1)+"*"+DoubleToString(d2,1)+"="+DoubleToString(out[0]*100,2)+
         "("+DoubleToString(d1*d2,2)+") // ";
   }
   Print(s);
}

Você pode executá-lo, verificá-lo, ele calcula bem a tabela de multiplicação.

Há também um erro muito pequeno: 2017.09.27 16:26:12.267 amostra de RF (EURUSD,H1) Info=1 Erro=0,0000000000000020