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