static void Main(string[] args) { try { // Get the data for initial var datasetColumns = new DataSetColumns(); PopulateDataSet(datasetColumns); // Learn about your data UnderstandData(datasetColumns); // Find Correlations //FindCorrelations(datasetColumns); //Do Binary Classification //var predictor = ModelAndTrain(); // Evaluate Results //EvaluateModel(predictor); } catch (Exception e) { Console.WriteLine(e); } Console.WriteLine("Execution Complete -- Press Enter"); Console.ReadLine(); }
public static void FindCorrelations(DataSetColumns dataSetColumns) { var pcc = PearsonCoefficientCalculator.ComputeCoefficient(dataSetColumns.AvgTotalBytes, dataSetColumns.AvgTotalPackets); Console.WriteLine("Pearson coefficient between AvgTotalBytes and AvgTotalPackets"); Console.WriteLine(pcc); pcc = PearsonCoefficientCalculator.ComputeCoefficient(dataSetColumns.AvgOutPercentUtil, dataSetColumns.AvgInPercentUtil); Console.WriteLine("Pearson coefficient between AvgOutPercentUtil and AvgInPercentUtil"); Console.WriteLine(pcc); }
public static void PopulateDataSet(DataSetColumns dataSetColumns) { var AvgTotalBytes = new List <double>(); var AvgTotalPackets = new List <double>(); var AvgAveragebps = new List <double>(); var AvgOutPercentUtil = new List <double>(); var AvgInPercentUtil = new List <double>(); var AvgPercentUtil = new List <double>(); var MinTotalBytes = new List <double>(); var MinTotalPackets = new List <double>(); var MinAveragebps = new List <double>(); var MinOutPercentUtil = new List <double>(); var MinInPercentUtil = new List <double>(); var MinPercentUtil = new List <double>(); var MaxTotalBytes = new List <double>(); var MaxTotalPackets = new List <double>(); var MaxAveragebps = new List <double>(); var MaxOutPercentUtil = new List <double>(); var MaxInPercentUtil = new List <double>(); var MaxPercentUtil = new List <double>(); var NextHourAlert = new List <int>(); using (var reader = new StreamReader(_datapath)) { reader.ReadLine(); // headers while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); AvgTotalBytes.Add(double.Parse(values[2])); AvgTotalPackets.Add(double.Parse(values[3])); AvgAveragebps.Add(double.Parse(values[4])); AvgOutPercentUtil.Add(double.Parse(values[5])); AvgInPercentUtil.Add(double.Parse(values[6])); AvgPercentUtil.Add(double.Parse(values[7])); MinTotalBytes.Add(double.Parse(values[8])); MinTotalPackets.Add(double.Parse(values[9])); MinAveragebps.Add(double.Parse(values[10])); MinOutPercentUtil.Add(double.Parse(values[11])); MinInPercentUtil.Add(double.Parse(values[12])); MinPercentUtil.Add(double.Parse(values[13])); MaxTotalBytes.Add(double.Parse(values[14])); MaxTotalPackets.Add(double.Parse(values[15])); MaxAveragebps.Add(double.Parse(values[16])); MaxOutPercentUtil.Add(double.Parse(values[17])); MaxInPercentUtil.Add(double.Parse(values[18])); MaxPercentUtil.Add(double.Parse(values[19])); NextHourAlert.Add(int.Parse(values[20])); } } dataSetColumns.AvgTotalBytes = AvgTotalBytes.ToArray(); dataSetColumns.AvgTotalPackets = AvgTotalPackets.ToArray(); dataSetColumns.AvgAveragebps = AvgAveragebps.ToArray(); dataSetColumns.AvgOutPercentUtil = AvgOutPercentUtil.ToArray(); dataSetColumns.AvgInPercentUtil = AvgInPercentUtil.ToArray(); dataSetColumns.AvgPercentUtil = AvgPercentUtil.ToArray(); dataSetColumns.MinTotalBytes = MinTotalBytes.ToArray(); dataSetColumns.MinTotalPackets = MinTotalPackets.ToArray(); dataSetColumns.MinAveragebps = MinAveragebps.ToArray(); dataSetColumns.MinOutPercentUtil = MinOutPercentUtil.ToArray(); dataSetColumns.MinInPercentUtil = MinInPercentUtil.ToArray(); dataSetColumns.MinPercentUtil = MinPercentUtil.ToArray(); dataSetColumns.MaxTotalBytes = MaxTotalBytes.ToArray(); dataSetColumns.MaxTotalPackets = MaxTotalPackets.ToArray(); dataSetColumns.MaxAveragebps = MaxAveragebps.ToArray(); dataSetColumns.MaxOutPercentUtil = MaxOutPercentUtil.ToArray(); dataSetColumns.MaxInPercentUtil = MaxInPercentUtil.ToArray(); dataSetColumns.MaxPercentUtil = MaxPercentUtil.ToArray(); dataSetColumns.NextHourAlert = NextHourAlert.ToArray(); }
/// <summary> /// This method reads the training data and calculates a variety of statistical data about each column. /// </summary> public static void UnderstandData(DataSetColumns dataSetColumns) { //Calculate and output the statistics for your pleasure var stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.AvgTotalBytes, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("AvgTotalBytes Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.AvgTotalPackets, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("AvgTotalPackets Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.AvgAveragebps, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("AvgAveragebps Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.AvgOutPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("AvgOutPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.AvgInPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("AvgInPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.AvgPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("AvgPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MinTotalBytes, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MinTotalBytes Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MinTotalPackets, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MinTotalPackets Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MinAveragebps, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MinAveragebps Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MinOutPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MinOutPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MinInPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MinInPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MinPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MinPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MaxTotalBytes, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MaxTotalBytes Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MaxTotalPackets, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MaxTotalPackets Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MaxAveragebps, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MaxAveragebps Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MaxOutPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MaxOutPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MaxInPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MaxInPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.MaxPercentUtil, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("MaxPercentUtil Statistics:"); Console.WriteLine(stats.ToString()); stats = MetricStatistics.CalculateMetricStatisticsAsync(dataSetColumns.NextHourAlert, DateTime.Now, TimeSpan.FromSeconds(1)).Result; Console.WriteLine("NextHourAlert Statistics:"); Console.WriteLine(stats.ToString()); }