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