Exemplo n.º 1
0
        private static int Main(string[] args)
        {
            var customCulture = (System.Globalization.CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();

            customCulture.NumberFormat.NumberDecimalSeparator = ".";

            Thread.CurrentThread.CurrentCulture = customCulture;

            if (args.Length != 9)
            {
                DisplayUsage();
                Console.ReadKey();
                return(-1);
            }
            try
            {
                PrepareParameters(args);
                PrintParameters(args);

                if (DatabaseUtils.CheckIfExists(args))
                {
                    Console.WriteLine("Experiment already exists in database!");
                    return(0);
                }

                var sw = new Stopwatch();
                sw.Start();

                Console.WriteLine("----- Generating data ------");
                var dataGenerator = new DataGenerator();
                dataGenerator.GenerateTrainingData();
                dataGenerator.GenerateTestData();

                Console.WriteLine("----- Classification data ------");

                var dataClassificator = new C45BinaryClassificator(dataGenerator.TrainingData.ToArray());
                dataClassificator.Learn();

                Console.WriteLine("----- Creating model ------");

                var modelCreator = new ModelCreator(dataClassificator.OutputPath);
                modelCreator.Create();

                sw.Stop();

                Console.WriteLine("----- Calculating statistics ------");

                // Calculating jaccard index for training data
                var statistics = new StatisticsCalculator();
                statistics.CalculateStatistics(dataClassificator.DecisionTree,
                                               modelCreator.UniqueConstraints,
                                               dataGenerator);

                // Saving data to database
                DatabaseUtils.SaveToDatabase(dataClassificator, modelCreator,
                                             statistics,
                                             dataGenerator,
                                             sw.ElapsedMilliseconds);
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
                DatabaseUtils.SaveErrorToDatabase(ex.Message);
                return(-1);
            }
            catch (FormatException)
            {
                const string message = "Error parsing input parameters";
                DatabaseUtils.SaveErrorToDatabase(message);
                Console.WriteLine(message);
                return(-1);
            }

            return(0);
        }