Esempio n. 1
0
        /// <summary>
        /// Trains the model and stores the weights
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_Train_Click(object sender, EventArgs e)
        {
            if (elm != null)
            {
                var watch = System.Diagnostics.Stopwatch.StartNew();
                elm.train(elm.Xtrain, elm.Ytrain);
                watch.Stop();
                long trainingTime = watch.ElapsedMilliseconds;
                output_TrainingTime.Text = trainingTime.ToString() + " Ms";
                button_Predict.Enabled   = true;
            }

            else
            {
                MessageBox.Show("Cannot train, please check your ELM", "ELM Training Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes the statistics window with the appropriate testing type
        /// </summary>
        /// <param name="type"></param>
        /// <param name="testOffset"></param>
        private void ShowStats(String type, int testOffset)
        {
            int inputDays       = Int32.Parse(input_InputDays.Text);
            int outputDays      = Int32.Parse(input_OutputDays.Text);
            int hiddenLayerSize = Int32.Parse(input_HiddenLayerSize.Text);
            int trainPercentage = Int32.Parse(input_TrainPercentage.Text);
            int biasValue       = Int32.Parse(input_BiasValue.Text);

            dataOffset = outputDays;
            double[] openPriceArray  = new double[testOffset];
            double[] closePriceArray = new double[testOffset];
            double[] highPriceArray  = new double[testOffset];;
            double[] lowPriceArray   = new double[testOffset];
            double[] offsetArray     = new double[testOffset];


            for (int i = 1; i <= 10; i++)
            {
                ELM tempELM = new ELM(inputDays, hiddenLayerSize, outputDays, biasValue, data, trainPercentage);
                switch (type)
                {
                case "Input Days":
                    tempELM = new ELM(i * testOffset, hiddenLayerSize, outputDays, biasValue, data, trainPercentage);
                    break;

                case "Output Days":
                    tempELM = new ELM(inputDays, hiddenLayerSize, i * testOffset, biasValue, data, trainPercentage);
                    break;

                case "Hidden Layer Size":
                    tempELM = new ELM(inputDays, i * testOffset, outputDays, biasValue, data, trainPercentage);
                    break;

                case "Train Percentage":
                    tempELM = new ELM(inputDays, hiddenLayerSize, outputDays, biasValue, data, i * testOffset);
                    break;
                }

                tempELM.train(tempELM.Xtrain, tempELM.Ytrain);
                Matrix <double> tempPrediction     = tempELM.predict(tempELM.Xtest);
                Matrix <double> tempTest           = tempELM.Ytest;
                int             tempBestIndex      = GetBestIndex(tempPrediction, tempTest);
                double[]        selectedPredSample = tempPrediction.Row(tempBestIndex).ToArray();
                double[]        selectedTestSample = tempTest.Row(tempBestIndex).ToArray();

                double[] predOpenPrice  = new ArraySegment <double>(selectedPredSample, 0, dataOffset).ToArray();
                double[] predClosePrice = new ArraySegment <double>(selectedPredSample, dataOffset, dataOffset).ToArray();
                double[] predHighPrice  = new ArraySegment <double>(selectedPredSample, 2 * dataOffset, dataOffset).ToArray();
                double[] predLowPrice   = new ArraySegment <double>(selectedPredSample, 3 * dataOffset, dataOffset).ToArray();

                double[] testOpenPrice  = new ArraySegment <double>(selectedTestSample, 0, dataOffset).ToArray();
                double[] testClosePrice = new ArraySegment <double>(selectedTestSample, dataOffset, dataOffset).ToArray();
                double[] testHighPrice  = new ArraySegment <double>(selectedTestSample, 2 * dataOffset, dataOffset).ToArray();
                double[] testLowPrice   = new ArraySegment <double>(selectedTestSample, 3 * dataOffset, dataOffset).ToArray();



                double tempOpenPriceError  = GetMeanSquare(predOpenPrice, testOpenPrice);
                double tempClosePriceError = GetMeanSquare(predClosePrice, testClosePrice);
                double tempHighPriceError  = GetMeanSquare(predHighPrice, testHighPrice);
                double tempLowPriceError   = GetMeanSquare(predLowPrice, testLowPrice);

                offsetArray[i - 1]     = i * testOffset;
                openPriceArray[i - 1]  = tempOpenPriceError;
                closePriceArray[i - 1] = tempClosePriceError;
                highPriceArray[i - 1]  = tempHighPriceError;
                lowPriceArray[i - 1]   = tempLowPriceError;
            }
            StatWindow inputStatWindow = new StatWindow(openPriceArray, closePriceArray, highPriceArray, lowPriceArray, offsetArray, type);

            inputStatWindow.Show();
        }