Exemple #1
0
        // CONSTRUCTEUR
        /// <summary>
        /// Creates an instance of the DataCollection class
        /// </summary>
        /// <param name="a_parser">Parser for getting examples from a given data source</param>
        /// <param name="a_inputsNumber">Number of inputs contained in an example</param>
        /// <param name="a_outputsNumber">Number of outputs contained in an example</param>
        /// <param name="a_learningRatio">Ratio (between 0 and 1) used for examples used for the neural network training, others examples are used for overlearning detection</param>
        public DataCollection(IExempleDataParserRepository a_parser, int a_inputsNumber, int a_outputsNumber, double a_learningRatio)
        {
            // Validation des arguments
            if (a_learningRatio < 0.0 || a_learningRatio > 1.0)
            {
                throw new ArgumentException("a_trainingRatio argument should be between 0.0 and 1.0 (0.8 value is recommended).");
            }

            List <DataPoint> dataFromParser = a_parser.GetData();
            Random           generator      = new Random();

            int trainingExempleNumber       = (int)(dataFromParser.Count * a_learningRatio);
            int generalisationExempleNumber = dataFromParser.Count - trainingExempleNumber;

            TrainingPoints       = new DataPoint[trainingExempleNumber];
            GeneralisationPoints = new DataPoint[generalisationExempleNumber];

            if (trainingExempleNumber > 0)
            {
                int effectiveTrainingExempleNumber = 0;
                // Remplissage du tableau trainingPoints avec des données des exemples de façon aléatoire
                while (trainingExempleNumber > effectiveTrainingExempleNumber)
                {
                    int randomIndex = generator.Next(dataFromParser.Count - 1);
                    TrainingPoints[effectiveTrainingExempleNumber] = dataFromParser[randomIndex];
                    dataFromParser.RemoveAt(randomIndex);
                    effectiveTrainingExempleNumber++;
                }
                for (int i = 0; i < generalisationExempleNumber; i++)
                {
                    GeneralisationPoints[i] = dataFromParser[i];
                }
            }
            else
            {
                TrainingPoints       = null;
                GeneralisationPoints = null;
            }
        }
Exemple #2
0
 // CONSTRUCTEUR
 public NeuralSystem(int a_inputsNumber, int a_hiddenNeuronsNumber, int a_outputNeuronsNumber, IExempleDataParserRepository a_parser, double a_learningRatio, IUserInterface a_gui, bool a_regressionTask)
 {
     data           = new DataCollection(a_parser, a_inputsNumber, a_outputNeuronsNumber, a_learningRatio);
     network        = new NeuralNetwork(a_inputsNumber, a_hiddenNeuronsNumber, a_outputNeuronsNumber);
     gui            = a_gui;
     regressionTask = a_regressionTask;
     LearningRate   = 0.3;
     MaxError       = 0.005;
     MaxIterations  = 10001;
 }