private static void RandomForest(AppIdentService appIdentService, AppIdentDataSource appIdentDataSource, AppIdentTestContext context) { Console.WriteLine($"{DateTime.Now} Running feature elimination with trashold { context.FeatureSelectionTreshold}."); var featureSelector = appIdentService.EliminateCorelatedFeatures(appIdentDataSource, context.FeatureSelectionTreshold, context); GridSearchParameterCollection bestParameters; if (!File.Exists(context.BestParametersFilePath)) { Console.WriteLine($"{DateTime.Now} Looking for best parameters."); bestParameters = appIdentService.RandomForestGetBestParameters(appIdentDataSource, featureSelector, context); } else { Console.WriteLine($"{DateTime.Now} Loading best parameters."); context.Load <GridSearchParameterCollection>(context.BestParametersFilePath, out bestParameters); } Console.WriteLine($"{DateTime.Now} Running cross validation."); var classificationStatisticsMeter = appIdentService.RandomForestCrossValidation(appIdentDataSource, context.FeatureSelector, bestParameters, context.CrossValidationFolds, context); Console.WriteLine($"{DateTime.Now} Cross validation results:"); classificationStatisticsMeter.PrintResults(); var model = context.Model; Console.WriteLine($"{DateTime.Now} Running classification"); appIdentService.AccordClassify(appIdentDataSource, model, context.FeatureSelector, context); Console.WriteLine($"{DateTime.Now} Classification results:"); classificationStatisticsMeter.PrintResults(); context.Save(); }
private static void Epi(AppIdentService appIdentService, AppIdentDataSource appIdentDataSource, AppIdentTestContext context) { Console.WriteLine($"{DateTime.Now} Running feature elimination with trashold { context.FeatureSelectionTreshold}."); var featureSelector = appIdentService.EliminateCorelatedFeatures(appIdentDataSource, context.FeatureSelectionTreshold, context); Console.WriteLine($"{DateTime.Now} Running classification"); var classificationStatisticsMeter = appIdentService.EpiClasify(appIdentDataSource, featureSelector, context); Console.WriteLine($"{DateTime.Now} Classification results:"); classificationStatisticsMeter.PrintResults(); }
private static void Bayesian(AppIdentService appIdentService, AppIdentDataSource appIdentDataSource, AppIdentTestContext context) { Console.WriteLine($"{DateTime.Now} Running feature elimination with trashold { context.FeatureSelectionTreshold}."); var featureSelector = appIdentService.EliminateCorelatedFeatures(appIdentDataSource, context.FeatureSelectionTreshold, context); Console.WriteLine($"{DateTime.Now} Running classification."); var classificationStatisticsMeter = appIdentService.BayesianClassify(appIdentDataSource, context.TrainingToVerificationRation, 0.99, context); Console.WriteLine($"{DateTime.Now} Classification results:"); classificationStatisticsMeter.PrintResults(); context.Save(); }
static void Main(string[] args) { var watch = new Stopwatch(); watch.Start(); var options = new Options(); if (!Parser.Default.ParseArguments(args, options)) { DebuggerCheckExit(); return; } //options.TrainingToVerificationRation = 0.7; //options.FeatureSelectionTrashold = 0.7; //options.IsEpi = true; //options.IsUseFullName = false; //options.MinFlows = 17; if (!options.IsEpi && !options.IsRandomForest && !options.IsBayesian) { Console.WriteLine("No classification method selected."); DebuggerCheckExit(); return; } var context = new AppIdentTestContext("cli", DateTime.Now) { MinFlows = options.MinFlows, TrainingToVerificationRation = options.TrainingToVerificationRation, FeatureSelectionTreshold = options.FeatureSelectionTrashold, CrossValidationFolds = options.CrossValidationFolds, IsEpi = options.IsEpi, IsRandomForest = options.IsRandomForest, IsBayesian = options.IsBayesian, IsUseFullName = options.IsUseFullName, BestParametersFilePath = options.BestParametersFilePath, }; context.ChangeNameByParameters(); context.Save(); SetLabelType(options); Console.WriteLine($"{DateTime.Now} Loading: {options.AppIdentDataSource}"); var appIdentDataSource = context.LoadAppIdentDataSource(options.AppIdentDataSource); Console.WriteLine($"{DateTime.Now} Repartitioning ratio {context.TrainingToVerificationRation} with min flows {context.MinFlows}"); appIdentDataSource.RepartitionFeatureVectorsTestingAndVerificationDatasets(context.TrainingToVerificationRation, context.MinFlows); context.SavePartitioning(appIdentDataSource); context.AppIdentDataSource = appIdentDataSource; if (!appIdentDataSource.TrainingSet.Any() || !appIdentDataSource.VerificationSet.Any()) { Console.WriteLine("No testing or verification data present after partitioning and filtering by minflow."); DebuggerCheckExit(); return; } var appIdentService = new AppIdentService(); if (options.IsRandomForest) { RandomForest(appIdentService, appIdentDataSource, context); } if (options.IsEpi) { Epi(appIdentService, appIdentDataSource, context); } if (options.IsBayesian) { Bayesian(appIdentService, appIdentDataSource, context); } watch.Stop(); context.RunningTime = watch.Elapsed; context.Save(); Console.WriteLine($"{DateTime.Now} Running time: {watch.Elapsed}"); DebuggerCheckExit(); }
public AccordAppIdent(AppIdentService appIdentService) { this.AppIdentService = appIdentService; }