protected override Func <double, double> Distribution(IEnumerable <double> bugLifetimes) { ExponentialRegression expRegression = new ExponentialRegression(); foreach (var time in bugLifetimes) { expRegression.AddTrainingData(time, (double)bugLifetimes.Where(t => t <= time).Count() / bugLifetimes.Count()); } expRegression.Train(); return(time => { return expRegression.Predict(time); }); }
/// <summary> /// Initializing regression list /// </summary> /// <param name="xVals"></param> /// <param name="yValsConv"></param> /// <param name="file"></param> /// <param name="predictDays"></param> /// <param name="name"></param> private void GetRegressionsList(double[] xVals, double[] yValsConv, CsvFile file, int predictDays, string name) { regressions.Clear(); PlotCanvas.Children.Clear(); AbstractRegression regression; Brush brush = null; if (ExponentialCheck.IsChecked == true) { regression = new ExponentialRegression(xVals, yValsConv); brush = Brushes.Gold; regressions.Add(new RegressionContainer(regression, predictDays, 0, file.Fields[0], name)); DrawPlot(regressions[regressions.Count - 1]); } if (LogarifmicCheck.IsChecked == true) { regression = new LogarifmicRegression(xVals, yValsConv); brush = Brushes.Coral; regressions.Add(new RegressionContainer(regression, predictDays, 1, file.Fields[0], name)); DrawPlot(regressions[regressions.Count - 1]); } if (HyperbolicCheck.IsChecked == true) { brush = Brushes.DeepPink; regression = new HyperbolicRegression(xVals, yValsConv); regressions.Add(new RegressionContainer(regression, predictDays, 2, file.Fields[0], name)); DrawPlot(regressions[regressions.Count - 1]); } if (SquareCheck.IsChecked == true) { brush = Brushes.ForestGreen; regression = new SquareRegression(xVals, yValsConv); regressions.Add(new RegressionContainer(regression, predictDays, 3, file.Fields[0], name)); DrawPlot(regressions[regressions.Count - 1]); } if (CubicCheck.IsChecked == true) { brush = Brushes.MidnightBlue; regression = new CubicRegression(xVals, yValsConv); regressions.Add(new RegressionContainer(regression, predictDays, 4, file.Fields[0], name)); DrawPlot(regressions[regressions.Count - 1]); } }
protected override Func<double, double> Distribution(IEnumerable<double> bugLifetimes) { ExponentialRegression expRegression = new ExponentialRegression(); foreach (var time in bugLifetimes) { expRegression.AddTrainingData(time, (double)bugLifetimes.Where(t => t <= time).Count() / bugLifetimes.Count()); } expRegression.Train(); return time => { return expRegression.Predict(time); }; }