コード例 #1
0
ファイル: Program.cs プロジェクト: panichevad/NeuralNetwork
        /// <summary>
        /// Charge le fichier des données Iris Flower
        /// </summary>
        private static List <Iris> ChargerIris()
        {
            // lecture du jeu complet
            List <Iris> cartes = new List <Iris>();

            using (StreamReader reader = File.OpenText(@"iris.csv"))
            {
                while (!reader.EndOfStream)
                {
                    string ligne = reader.ReadLine();
                    if (string.IsNullOrWhiteSpace(ligne))
                    {
                        continue;
                    }

                    string[] splitted = ligne.Split(';');
                    Iris     iris     = new Iris();

                    iris.SepaleLongueur = Convert.ToDouble(splitted[0]);
                    iris.SepaleLargeur  = Convert.ToDouble(splitted[1]);
                    iris.PetaleLongueur = Convert.ToDouble(splitted[2]);
                    iris.PetaleLargeur  = Convert.ToDouble(splitted[3]);
                    iris.Espece         = splitted[4];

                    cartes.Add(iris);
                } // while
            }

            return(cartes);
        }
コード例 #2
0
        /// <summary>
        /// Charge le fichier des données Iris Flower
        /// </summary>
        private static List<Iris> ChargerIris()
        {
            // lecture du jeu complet
            List<Iris> cartes = new List<Iris>();

            using (StreamReader reader = File.OpenText(@"iris.csv"))
            {
                while (!reader.EndOfStream)
                {
                    string ligne = reader.ReadLine();
                    if (string.IsNullOrWhiteSpace(ligne))
                    {
                        continue;
                    }

                    string[] splitted = ligne.Split(';');
                    Iris iris = new Iris();

                    iris.SepaleLongueur = Convert.ToDouble(splitted[0]);
                    iris.SepaleLargeur = Convert.ToDouble(splitted[1]);
                    iris.PetaleLongueur = Convert.ToDouble(splitted[2]);
                    iris.PetaleLargeur = Convert.ToDouble(splitted[3]);
                    iris.Espece = splitted[4];

                    cartes.Add(iris);

                } // while
            }

            return cartes;
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: panichevad/NeuralNetwork
        private static void Iris()
        {
            // http://archive.ics.uci.edu/ml/datasets/Iris
            // https://visualstudiomagazine.com/Articles/2013/09/01/Neural-Network-Training-Using-Back-Propagation.aspx?Page=1

            List <Iris> listeIris = ChargerIris();

            // jeu de test: 2 éléments de chaque classe
            List <Iris> listeTest = listeIris.Where(i => i.Espece == "Iris-virginica").Take(2).ToList();

            listeTest.AddRange(listeIris.Where(i => i.Espece == "Iris-setosa").Take(2).ToList());
            listeTest.AddRange(listeIris.Where(i => i.Espece == "Iris-versicolor").Take(2).ToList());

            // on les supprime du jeu d'entrainement
            List <Iris> training = listeIris.Where(i => i.Espece == "Iris-virginica").Skip(2).ToList();

            training.AddRange(listeIris.Where(i => i.Espece == "Iris-setosa").Skip(2).ToList());
            training.AddRange(listeIris.Where(i => i.Espece == "Iris-versicolor").Skip(2).ToList());

            // monte les données pour le réseau
            // entrée:
            // dans cet ordre: PetaleLargeur,PetaleLongueur,SepaleLargeur,SepaleLongueur
            // sortie:
            // 1,0,0 => Iris-virginica
            // 0,0,1 => Iris-setosa
            // 0,1,0 => Iris-versicolor

            entrainement      = new double[training.Count][];
            cibleEntrainement = new double[training.Count][];
            for (int i = 0; i < training.Count; i++)
            {
                Iris iris = training[i];
                entrainement[i] = new double[] { iris.PetaleLargeur, iris.PetaleLongueur, iris.SepaleLargeur, iris.SepaleLongueur };

                if (iris.Espece == "Iris-virginica") // Iris-virginica
                {
                    cibleEntrainement[i] = new double[] { 1, 0, 0 };
                }
                if (iris.Espece == "Iris-versicolor") // Iris-versicolor
                {
                    cibleEntrainement[i] = new double[] { 0, 1, 0 };
                }
                if (iris.Espece == "Iris-setosa") // Iris-setosa
                {
                    cibleEntrainement[i] = new double[] { 0, 0, 1 };
                }
            }

            tests     = new double[listeTest.Count][];
            cibleTest = new double[listeTest.Count][];
            for (int i = 0; i < listeTest.Count; i++)
            {
                Iris iris = listeTest[i];
                tests[i] = new double[] { iris.PetaleLargeur, iris.PetaleLongueur, iris.SepaleLargeur, iris.SepaleLongueur };

                if (iris.Espece == "Iris-virginica")
                {
                    cibleTest[i] = new double[] { 1, 0, 0 };
                }
                if (iris.Espece == "Iris-versicolor")
                {
                    cibleTest[i] = new double[] { 0, 1, 0 };
                }
                if (iris.Espece == "Iris-setosa")
                {
                    cibleTest[i] = new double[] { 0, 0, 1 };
                }
            }
        }