From c79b01a7efa0689729869d6b1033adec08f42537 Mon Sep 17 00:00:00 2001 From: George Montanez <38017604+george-microsoft@users.noreply.github.com> Date: Tue, 29 May 2018 12:29:11 -0700 Subject: [PATCH 1/2] Changes to RocketEngine to fix take top k logic. --- .../AutoMlEngines/RocketEngine.cs | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/Microsoft.ML.PipelineInference/AutoMlEngines/RocketEngine.cs b/src/Microsoft.ML.PipelineInference/AutoMlEngines/RocketEngine.cs index 27b7fa54b7..80388eb53e 100644 --- a/src/Microsoft.ML.PipelineInference/AutoMlEngines/RocketEngine.cs +++ b/src/Microsoft.ML.PipelineInference/AutoMlEngines/RocketEngine.cs @@ -196,21 +196,10 @@ private TransformInference.SuggestedTransform[] SampleTransforms(RecipeInference private RecipeInference.SuggestedRecipe.SuggestedLearner[] GetTopLearners(IEnumerable history) { var weights = LearnerHistoryToWeights(history.ToArray(), IsMaximizingMetric); - var topKTuples = new Tuple[_topK]; - - for (int i = 0; i < weights.Length; i++) - { - if (i < _topK) - topKTuples[i] = new Tuple(weights[i], i); - else - { - for (int j = 0; j < topKTuples.Length; j++) - if (weights[i] > topKTuples[j].Item1) - topKTuples[j] = new Tuple(weights[i], i); - } - } - - return topKTuples.Select(t => AvailableLearners[t.Item2]).ToArray(); + return weights.Select((w, i) => new { Weight = w, Index = i }) + .OrderByDescending(x => x.Weight) + .Take(_topK) + .Select(t=>AvailableLearners[t.Index]).ToArray(); } public override PipelinePattern[] GetNextCandidates(IEnumerable history, int numCandidates) From 9ef8af1cc1e6407706ac50bd37a644d69c7f62f9 Mon Sep 17 00:00:00 2001 From: George Montanez <38017604+george-microsoft@users.noreply.github.com> Date: Wed, 30 May 2018 13:15:28 -0700 Subject: [PATCH 2/2] Add namespace information to allow file to reference correct version of Formatting object. --- src/Microsoft.ML.PipelineInference/DatasetFeaturesInference.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.ML.PipelineInference/DatasetFeaturesInference.cs b/src/Microsoft.ML.PipelineInference/DatasetFeaturesInference.cs index f0d173de13..e8d40fc6c8 100644 --- a/src/Microsoft.ML.PipelineInference/DatasetFeaturesInference.cs +++ b/src/Microsoft.ML.PipelineInference/DatasetFeaturesInference.cs @@ -507,7 +507,7 @@ public static string InferDatasetFeatures(IHostEnvironment env, Arguments args) } if (args.PrettyPrint) - jsonString = JsonConvert.SerializeObject(features, Formatting.Indented); + jsonString = JsonConvert.SerializeObject(features, Newtonsoft.Json.Formatting.Indented); else jsonString = JsonConvert.SerializeObject(features);