交易中的机器学习:理论、模型、实践和算法交易 - 页 485

 
米奇-摩斯
有可能教机器识别图片吗?

???

你没有谷歌吗?

 
mytarmailS:

???

你没有谷歌?

所以你没有能力这样做?
 
米奇-摩斯
所以你就不能做了?

我可以...

这句话是怎么来的?顺便说一下,你的问题是关于别的东西。

 

向专家提问。为什么缓冲区输出到打印机,但这一行 却不想被画出来,也没有被另一个指标调用????。

 
mytarmailS:

我可以...

这句话是怎么来的?顺便说一下,你的问题是关于别的东西。


从你的答案来看。

我想在我的机器人中建立一个模式识别模块,用µl编写,我想知道在里面放什么,应该包括什么。

如果你把我送到谷歌,我将得出结论,这是不可能的(在你的版本中)。

 
米奇-摩斯


任何分类器,图片被表示为一个矩阵

有什么问题呢?还是你想让我给你写一个代码?

 
mytarmailS:
任何分类器,图片被表示为一个矩阵

有什么问题呢?还是你想让我给你写一个代码?

我想了解你需要用什么来设置识别的参数,寻找什么,它叫什么。确切地说,是对工具的描述
 
米奇-摩斯
我想了解设置识别参数时需要寻找什么,以及它的名称是什么。确切地说,是对工具的描述
你可以去这里,也许你会明白什么是什么。

注意到。
 

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

用于图像识别的神经元学课程,来自大学讲座的视频。非常好,但用英语。

 

问题:射频输出通常给出AVGerr和RMSerr的区域为

0.0000921245

0.0000920833

0.0000926474

0.0000930916

它是AVGerr。

我在文章中看到,误差通常为0.1、0.9等。

像这样计算。

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));
  }

而这里是计算乘法表的测试脚本(教学用RF表)。

#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);
}

你可以运行它,检查它,它能很好地计算出乘法表。

还有一个非常小的误差: 2017.09.27 16:26:12.267 RF样本(EURUSD,H1) Info=1 Error=0.0000000000000020