Example #1
0
        public void TestXGBoostNaiveEvaluate()
        {
            var filename    = @"../../../../datasets/xgboost/model_xbg_trees.txt";
            var treesString = File.ReadAllText(filename);
            var model       = XGBoostNaive.Create(treesString);

            var filename2     = @"../../../../datasets/xgboost/xgboost_test_cases_no_feature_names.txt";
            var samplesString = File.ReadLines(filename2);
            var samples       = new Dictionary <string, double[]>();

            foreach (var line in samplesString.Skip(1))
            {
                var parts        = line.Split(',');
                var sample       = parts[0];
                var featureIndex = int.Parse(parts[1]);
                var value        = float.Parse(parts[2]);
                if (!samples.ContainsKey(sample))
                {
                    samples.Add(sample, new double[1000]);
                }
                samples[sample][featureIndex] = value;
            }

            const int probablity_feature_index = 840;
            var       timer = Stopwatch.StartNew();

            foreach (var sample in samples)
            {
                var actual   = model.EvaluateProbability(sample.Value);
                var expected = sample.Value[probablity_feature_index];
                Assert.InRange(actual, expected - 1e-06, expected + 1e-06);
            }
            timer.Stop();
            output.WriteLine($"Time taken for {samples.Count} evaluations: {timer.Elapsed.TotalMilliseconds} ms");
        }
Example #2
0
        public void TestXGBoostNaiveTiming()
        {
            var filename    = @"../../../../datasets/xgboost/model_xbg_trees.txt";
            var treesString = File.ReadAllText(filename);
            var model       = XGBoostNaive.Create(treesString);

            var filename2     = @"../../../../datasets/xgboost/xgboost_test_cases_no_feature_names.txt";
            var samplesString = File.ReadLines(filename2);
            var samples       = new Dictionary <string, double[]>();

            foreach (var line in samplesString.Skip(1))
            {
                var parts        = line.Split(',');
                var sample       = parts[0];
                var featureIndex = int.Parse(parts[1]);
                var value        = float.Parse(parts[2]);
                if (!samples.ContainsKey(sample))
                {
                    samples.Add(sample, new double[1000]);
                }
                samples[sample][featureIndex] = value;
            }

            var inputs = samples.Select(m => m.Value).ToArray();
            var timer  = Stopwatch.StartNew();

            foreach (var sample in inputs)
            {
                model.EvaluateProbability(sample);
            }
            timer.Stop();
            output.WriteLine($"{nameof(TestXGBoostNaiveTiming)} - Time taken for {samples.Count} evaluations: {timer.Elapsed.TotalMilliseconds} ms");
        }
Example #3
0
 public void TestXGBoostNaiveCreate()
 {
     var filename    = @"../../../../datasets/xgboost/model_xbg_trees.txt";
     var treesString = File.ReadAllText(filename);
     var model       = XGBoostNaive.Create(treesString);
     // TODO: ensure correctness of each tree
 }