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. }
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; }
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(); }