Beispiel #1
0
        public void RegisterTypeWithAttribute()
        {
            // Build in-memory data.
            var tribe = new List <AlienHero>()
            {
                new AlienHero("ML.NET", 2, 1000, 2000, 3000, 4000, 5000, 6000, 7000)
            };

            // Build a ML.NET pipeline and make prediction.
            var tribeDataView    = ML.Data.LoadFromEnumerable(tribe);
            var heroEstimator    = new CustomMappingEstimator <AlienHero, SuperAlienHero>(ML, AlienFusionProcess.MergeBody, "LambdaAlienHero");
            var model            = heroEstimator.Fit(tribeDataView);
            var tribeTransformed = model.Transform(tribeDataView);
            var tribeEnumerable  = ML.Data.CreateEnumerable <SuperAlienHero>(tribeTransformed, false).ToList();

            // Make sure the pipeline output is correct.
            Assert.Equal(tribeEnumerable[0].Name, "Super " + tribe[0].Name);
            Assert.Equal(tribeEnumerable[0].Merged.Age, tribe[0].One.Age + tribe[0].Two.Age);
            Assert.Equal(tribeEnumerable[0].Merged.Height, tribe[0].One.Height + tribe[0].Two.Height);
            Assert.Equal(tribeEnumerable[0].Merged.Weight, tribe[0].One.Weight + tribe[0].Two.Weight);
            Assert.Equal(tribeEnumerable[0].Merged.HandCount, tribe[0].One.HandCount + tribe[0].Two.HandCount);

            // Build prediction engine from the trained pipeline.
            var engine     = ML.Model.CreatePredictionEngine <AlienHero, SuperAlienHero>(model);
            var alien      = new AlienHero("TEN.LM", 1, 2, 3, 4, 5, 6, 7, 8);
            var superAlien = engine.Predict(alien);

            // Make sure the prediction engine produces expected result.
            Assert.Equal(superAlien.Name, "Super " + alien.Name);
            Assert.Equal(superAlien.Merged.Age, alien.One.Age + alien.Two.Age);
            Assert.Equal(superAlien.Merged.Height, alien.One.Height + alien.Two.Height);
            Assert.Equal(superAlien.Merged.Weight, alien.One.Weight + alien.Two.Weight);
            Assert.Equal(superAlien.Merged.HandCount, alien.One.HandCount + alien.Two.HandCount);
        }
        static public void Example()
        {
            var mlContext = new MLContext();
            // Build in-memory data.
            var tribe = new List <AlienHero>()
            {
                new AlienHero("ML.NET", 2, 1000, 2000, 3000, 4000, 5000, 6000, 7000)
            };

            // Build a ML.NET pipeline and make prediction.
            var tribeDataView    = mlContext.Data.LoadFromEnumerable(tribe);
            var pipeline         = mlContext.Transforms.CustomMapping(AlienFusionProcess.GetMapping(), contractName: null);
            var model            = pipeline.Fit(tribeDataView);
            var tribeTransformed = model.Transform(tribeDataView);

            // Print out prediction produced by the model.
            var firstAlien = mlContext.Data.CreateEnumerable <SuperAlienHero>(tribeTransformed, false).First();

            Console.WriteLine($"We got a super alien with name {firstAlien.Name}, age {firstAlien.Merged.Age}, " +
                              $"height {firstAlien.Merged.Height}, weight {firstAlien.Merged.Weight}, and {firstAlien.Merged.HandCount} hands.");

            // Expected output:
            //   We got a super alien with name Super Unknown, age 4002, height 6000, weight 8000, and 10000 hands.

            // Create a prediction engine and print out its prediction.
            var engine     = mlContext.Model.CreatePredictionEngine <AlienHero, SuperAlienHero>(model);
            var alien      = new AlienHero("TEN.LM", 1, 2, 3, 4, 5, 6, 7, 8);
            var superAlien = engine.Predict(alien);

            Console.Write($"We got a super alien with name {superAlien.Name}, age {superAlien.Merged.Age}, " +
                          $"height {superAlien.Merged.Height}, weight {superAlien.Merged.Weight}, and {superAlien.Merged.HandCount} hands.");

            // Expected output:
            //   We got a super alien with name Super Unknown, age 6, height 8, weight 10, and 12 hands.
        }
Beispiel #3
0
 public static void MergeBody(AlienHero input, SuperAlienHero output)
 {
     output.Name             = "Super " + input.Name;
     output.Merged.Age       = input.One.Age + input.Two.Age;
     output.Merged.Height    = input.One.Height + input.Two.Height;
     output.Merged.Weight    = input.One.Weight + input.Two.Weight;
     output.Merged.HandCount = input.One.HandCount + input.Two.HandCount;
 }
Beispiel #4
0
        void TestCustomTransformBackcompat()
        {
            // With older versions, it is necessary to register the assembly
            ML.ComponentCatalog.RegisterAssembly(typeof(AlienFusionProcess).Assembly);

            var modelPath    = Path.Combine(DataDir, "backcompat", "customTransform.zip");
            var trainedModel = ML.Model.Load(modelPath, out var dataViewSchema);

            var engine     = ML.Model.CreatePredictionEngine <AlienHero, SuperAlienHero>(trainedModel);
            var alien      = new AlienHero("TEN.LM", 1, 2, 3, 4, 5, 6, 7, 8);
            var superAlien = engine.Predict(alien);

            // Make sure the prediction engine produces expected result.
            Assert.Equal(superAlien.Name, "Super " + alien.Name);
            Assert.Equal(superAlien.Merged.Age, alien.One.Age + alien.Two.Age);
            Assert.Equal(superAlien.Merged.Height, alien.One.Height + alien.Two.Height);
            Assert.Equal(superAlien.Merged.Weight, alien.One.Weight + alien.Two.Weight);
            Assert.Equal(superAlien.Merged.HandCount, alien.One.HandCount + alien.Two.HandCount);

            Done();
        }