private static void StartSCProblem() { var bestClassifiers = new Individual[8]; CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; ECActivator.AddSourceAssemblies(new[] { Assembly.GetAssembly(typeof(IEvolutionState)), Assembly.GetAssembly(typeof(MultiClassifierProblem)) }); var parameters = Evolve.LoadParameterDatabase(new[] { "-file", @"Params\App\Iris\single.params" }); IEvolutionState state = Evolve.Initialize(parameters, 0); var date = DateTime.Now.Ticks.ToString(); var directoryName = "stats/" + date; var directory = System.IO.Directory.CreateDirectory(directoryName); var writer = new System.IO.StreamWriter(directoryName + "/multi_cl_stats.txt", false); // IEvolutionState state = Evolve.Initialize(Evolve.LoadParameterDatabase(new[] { "-file", @"Params\App\Iris\single.params" }), 0); for (var i = 0; i < 8; i++) { // parameters = Evolve.LoadParameterDatabase(new[] { "-file", @"Params\App\Iris\single.params", "-stat.file", @"out1.stat" }); if (i != 0) { state = Evolve.Initialize(parameters, 0); } MultiClassificationClass.Current = MultiClassificationClass.Labels[i]; // state.Output.FilePrefix = i.ToString(); state.Run(EvolutionState.C_STARTED_FRESH); var best = ((SimpleStatistics)((SimpleEvolutionState)state).Statistics).BestOfRun[0]; int humanGraph = state.Output.AddLog(directoryName + "/multi_cl_human_graph_" + MultiClassificationClass.Current + ".txt"); int ecjGraph = state.Output.AddLog(directoryName + "/multi_cl_ecj_graph_" + MultiClassificationClass.Current + ".txt"); ((GPIndividual)best).Trees[0].PrintStyle = GPTree.PRINT_STYLE_DOT; ((GPIndividual)best).Trees[0].PrintTreeForHumans(state, humanGraph); ((GPIndividual)best).Trees[0].PrintTree(state, ecjGraph); state.Output.Close(); // System.IO.File.Delete("out.stat"); bestClassifiers[i] = best; var writer2 = new System.IO.StreamWriter(directoryName + "/classifier_code_" + MultiClassificationClass.Current + ".txt"); var code = TreeReader.PrintCodeFromTree(((GPIndividual)best).Trees[0]); writer2.Write(code); writer2.Close(); var accuracy = (double)(1552 - ((KozaFitness)bestClassifiers[i].Fitness).StandardizedFitness) / 1552; writer.WriteLine("Klasyfikator dla gestu " + MultiClassificationClass.Labels[i]); writer.WriteLine("Ilość generacji: " + state.NumGenerations.ToString()); writer.WriteLine("Rozmiar drzewa: " + ((GPIndividual)bestClassifiers[i]).Size.ToString()); writer.WriteLine("Poprawność klasyfikacji: " + accuracy.ToString()); writer.WriteLine(); // ((GPIndividual)bestClassifiers[0]).Trees[0].Child.Eval //((GPIndividual)bestClassifiers[0]).Trees[0]. // ((SingleClassifierProblem)state.Evaluator.p_problem) } writer.Close(); CheckClassifierOnTestData(bestClassifiers, state, (int)ClassifierType.MULTI_CLASSIFIER, directoryName); }
private static void StartGP() { CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; var test = new DataLoader(@"Datasets\gesty_pogrupowane.txt", 11, 1491, 1, 2, '\t'); ECActivator.AddSourceAssemblies(new[] { Assembly.GetAssembly(typeof(IEvolutionState)), Assembly.GetAssembly(typeof(ClassificationProblem)) }); IEvolutionState state = Evolve.Initialize(Evolve.LoadParameterDatabase(new[] { "-file", @"Params\App\Iris\koza.params" }), 2); state.Run(EvolutionState.C_STARTED_FRESH); var best = ((SimpleStatistics)((SimpleEvolutionState)state).Statistics).BestOfRun[0]; var date = DateTime.Now.Ticks.ToString(); var directoryName = "stats/" + date; var directory = System.IO.Directory.CreateDirectory(directoryName); var stats = new List <string>(); stats.Add("Ilość pokoleń: " + state.NumGenerations); var accuracy = (double)(1552 - ((KozaFitness)best.Fitness).StandardizedFitness) / 1552; stats.Add("Rozmiar drzewa: " + ((GPIndividual)best).Size.ToString()); stats.Add("Głębokość drzewa: " + ((GPIndividual)best).Trees[0].Child.Depth.ToString()); stats.Add("Poprawność klasyfikacji dla danych uczących: " + accuracy.ToString()); System.IO.File.WriteAllLines(directoryName + "/single_cl_stats.txt", stats.ToArray()); var writer = new System.IO.StreamWriter(directoryName + "/classifier_code.txt"); var code = TreeReader.PrintCodeFromTree(((GPIndividual)best).Trees[0]); writer.Write(code); writer.Close(); int humanGraph = state.Output.AddLog(directoryName + "/single_cl_human_graph.txt"); int ecjGraph = state.Output.AddLog(directoryName + "/single_cl_ecj_graph.txt"); ((GPIndividual)best).Trees[0].PrintStyle = GPTree.PRINT_STYLE_DOT; ((GPIndividual)best).Trees[0].PrintTreeForHumans(state, humanGraph); ((GPIndividual)best).Trees[0].PrintTree(state, ecjGraph); CheckClassifierOnTestData(new[] { best }, state, (int)ClassifierType.SINGLE_CLASSIFIER, directoryName); //var data = new ClassificationData(); /* * state.Output.AddLog(@"F:\Logs\test.gv"); * ((GPIndividual)best[0]).Trees[0].PrintStyle = GPTree.PRINT_STYLE_DOT; * ((GPIndividual)best[0]).Trees[0].PrintTreeForHumans(state, state.Output.NumLogs - 1); * ((GPIndividual)best[0]).Trees[0].PrintTree(state, state.Output.NumLogs - 1); */ }
static void Main(string[] args) { CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; ECActivator.AddSourceAssemblies(new[] { Assembly.GetAssembly(typeof(IEvolutionState)), Assembly.GetAssembly(typeof(FeatureExtractionProblem2)) }); IEvolutionState state = Evolve.Initialize(Evolve.LoadParameterDatabase(new[] { "-file", @"Parameters\problem2.params" }), 11); state.Run(EvolutionState.C_STARTED_FRESH); var problem = (FeatureExtractionProblem2)state.Evaluator.p_problem; // var treeLog1 = state.Output.AddLog(@"F:\Gesty\logs\gvtree_gen1.txt"); //var treeLog2 = state.Output.AddLog(@"F:\Gesty\logs\gvtree_gen10.txt"); //var ecjGraph = state.Output.AddLog(@"F:\Gesty\logs\ecjGraph.txt"); //var bestOfRun = ((SimpleStatistics)state.Statistics).BestOfRun[0]; //((GPIndividual)bestOfRun).Trees[0].PrintTree(state, ecjGraph); //((GPIndividual)bestOfRun).Trees[0].PrintStyle = GPTree.PRINT_STYLE_DOT; //((GPIndividual)bestOfRun).Trees[0].PrintTreeForHumans(state, treeLog); var input = problem.Input; var stack = problem.Stack; var stats = (SimpleStatistics)state.Statistics; var bestOfRun = (GPIndividual)stats.BestOfRun[0]; var treeReader = new StreamReader(@"F:\Gesty\logs\ecjGraph.txt"); bestOfRun.Trees[0].ReadTree(state, treeReader); bestOfRun.Evaluated = false; var imageList = new string[] { @"F:\Gesty\problem2\grayscale\A\a\color_0_0002.png", @"F:\Gesty\problem2\grayscale\A\b\color_1_0002.png", @"F:\Gesty\problem2\grayscale\A\c\color_2_0002.png", @"F:\Gesty\problem2\grayscale\A\f\color_5_0002.png", @"F:\Gesty\problem2\grayscale\A\h\color_7_0002.png" }; int i = 0; foreach (string image in imageList) { var dir = @"F:\Gesty\testy\examples"; var tempImg = new Image <Gray, Byte>(image); tempImg.CopyTo(problem.currentImage[0]); tempImg.CopyTo(problem.originalImage[0]); bestOfRun.Trees[0].Child.Eval(state, 0, input, stack, bestOfRun, problem); tempImg.Save(dir + @"\" + i + ".png"); problem.currentImage[0].Save(dir + @"\" + i + "_trans.png"); ImageTransformer.GetSquareSuperpixelImages(problem.currentImage[0], dir, i.ToString(), 8); i++; } problem.Evaluate(state, bestOfRun, 0, 0); Console.WriteLine(bestOfRun.Fitness); /* * var confMatFile = new StreamWriter(@"F:\Gesty\testy\confmatBest.csv"); * for (int x = 0; x < 10; x++) * { * var line = new StringBuilder(); * for (int j = 0; j < 10; j++) * { * line.Append(problem.confMat[x, j].ToString() + ';'); * } * confMatFile.WriteLine(line.ToString().Trim(';')); * } * confMatFile.Close(); */ // Console.WriteLine(bestOfRun.Fitness); /* * var tempImg = new Image<Gray, Byte>(@"F:\Gesty\problem2\grayscale\A\a\color_0_0002.png"); * tempImg.CopyTo(problem.currentImage[0]); * tempImg.CopyTo(problem.originalImage[0]); * ((GPIndividual)bestOfRun).Trees[0].Child.Eval(state, 0, input, stack, bestOfRun, problem); * problem.currentImage[0].Save(@"F:\Gesty\testy\transformed.png"); */ /* * var gesty = new string[8] { "piesc", "dlon", "1p", "2p", "3p", "4p", "5p", "kciuk" }; * var imageIndex = 0; * foreach (string gest in gesty) * { * var dir = @"F:\Gesty\superpixel\200x200\" + gest; * * //oryginalny * var tempImg = new Image<Gray, Byte>(problem.imageList[imageIndex]); * tempImg.CopyTo(problem.currentImage[0]); * tempImg.CopyTo(problem.originalImage[0]); * tempImg.Dispose(); * bestOfRun.Trees[0].Child.Eval(state, 0, input, stack, bestOfRun, problem); * problem.imageTransformer.GetSuperpixelImages(problem.currentImage[0], dir, "oryginalny"); * imageIndex += 101; * * //obrocony * var tempImg2 = new Image<Gray, Byte>(problem.imageList[imageIndex]); * tempImg2.CopyTo(problem.currentImage[0]); * tempImg2.CopyTo(problem.originalImage[0]); * tempImg2.Dispose(); * bestOfRun.Trees[0].Child.Eval(state, 0, input, stack, bestOfRun, problem); * problem.imageTransformer.GetSuperpixelImages(problem.currentImage[0], dir, "obrocony"); * imageIndex += 101; * * //zaklocony * var tempImg3 = new Image<Gray, Byte>(problem.imageList[imageIndex]); * tempImg3.CopyTo(problem.currentImage[0]); * tempImg3.CopyTo(problem.originalImage[0]); * tempImg3.Dispose(); * bestOfRun.Trees[0].Child.Eval(state, 0, input, stack, bestOfRun, problem); * problem.imageTransformer.GetSuperpixelImages(problem.currentImage[0], dir, "zaklocony"); * imageIndex += 11; * } */ Console.ReadKey(); }