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