// please before call this fuction set 2 properties and then call generate method
        public MyCategorizedTimeSeri <T> generate(int numberOfTests, int numberOfForecastTests)
        {
            MyTimeSeri <T>            tmp = generate();
            MyCategorizedTimeSeri <T> myCategorizedTimeSeri = new MyCategorizedTimeSeri <T>();
            int rows = tmp.inputs.GetLength(0) - numberOfTests - numberOfForecastTests;

            myCategorizedTimeSeri.TimeSeri            = TimeSeri;
            myCategorizedTimeSeri.TrainInputs         = new T[rows, NumberOfInputVariables];
            myCategorizedTimeSeri.TrainTargets        = new T[rows];
            myCategorizedTimeSeri.TestInputs          = new T[numberOfTests, NumberOfInputVariables];
            myCategorizedTimeSeri.TestTargets         = new T[numberOfTests];
            myCategorizedTimeSeri.ForecastTestInputs  = new T[numberOfForecastTests, NumberOfInputVariables];
            myCategorizedTimeSeri.ForecastTestTargets = new T[numberOfForecastTests];
            int l = 0;

            for (; l < rows; l++)
            {
                for (int j = 0; j < NumberOfInputVariables; j++)
                {
                    myCategorizedTimeSeri.TrainInputs[l, j] = tmp.inputs[l, j];
                }
                myCategorizedTimeSeri.TrainTargets[l] = tmp.targets[l];
            }
            for (int i = 0; i < numberOfTests; i++, l++)
            {
                for (int j = 0; j < NumberOfInputVariables; j++)
                {
                    myCategorizedTimeSeri.TestInputs[i, j] = tmp.inputs[l, j];
                }
                myCategorizedTimeSeri.TestTargets[i] = tmp.targets[l];
            }
            for (int i = 0; i < numberOfForecastTests; i++, l++)
            {
                for (int j = 0; j < NumberOfInputVariables; j++)
                {
                    myCategorizedTimeSeri.ForecastTestInputs[i, j] = tmp.inputs[l, j];
                }
                myCategorizedTimeSeri.ForecastTestTargets[i] = tmp.targets[l];
            }
            return(myCategorizedTimeSeri);
        }
        public void StartSVM(float[] data)
        {
            timeSeriGenerator = new TimeSeriGenerator <float>();
            MyTimeSeri <float> myTimeSeri = timeSeriGenerator.generateWithThisData(data, 6);

            Matrix <float> trainData    = new Matrix <float>(myTimeSeri.inputs);
            Matrix <float> trainClasses = new Matrix <float>(myTimeSeri.targets);

            svmModel = new SVM();
            SVMParams p = new SVMParams();

            p.KernelType = Emgu.CV.ML.MlEnum.SVM_KERNEL_TYPE.POLY;
            p.SVMType    = Emgu.CV.ML.MlEnum.SVM_TYPE.EPS_SVR; // for regression
            p.C          = 1;
            p.TermCrit   = new MCvTermCriteria(100, 0.00001);
            p.Gamma      = 1;
            p.Degree     = 1;
            p.P          = 1;
            p.Nu         = 0.1;

            bool trained = svmModel.TrainAuto(trainData, trainClasses, null, null, p.MCvSVMParams, 10);
        }