private protected PredictionEngineBase(IHostEnvironment env, ITransformer transformer, bool ignoreMissingColumns, SchemaDefinition inputSchemaDefinition = null, SchemaDefinition outputSchemaDefinition = null) { Contracts.CheckValue(env, nameof(env)); env.AssertValue(transformer); Transformer = transformer; var makeMapper = TransformerChecker(env, transformer); env.AssertValue(makeMapper); _inputRow = DataViewConstructionUtils.CreateInputRow <TSrc>(env, inputSchemaDefinition); PredictionEngineCore(env, _inputRow, makeMapper(_inputRow.Schema), ignoreMissingColumns, outputSchemaDefinition, out _disposer, out _outputRow); OutputSchema = Transformer.GetOutputSchema(_inputRow.Schema); }
/// <summary> /// Sets up the <see cref="IDtoEmotion"/> field. /// </summary> /// <param name="inputDataViewSchema">The schema when the initial data view is loaded. This will be inside of <see cref="TrainModel{TFaceData}"/>.</param> private static void SetupEmotionsToId(DataViewSchema inputDataViewSchema) { // Get names of emotions. var slotNames = new VBuffer <ReadOnlyMemory <char> >(); model.GetOutputSchema(inputDataViewSchema).GetColumnOrNull("Label")?.GetKeyValues(ref slotNames); IDtoEmotion = new Dictionary <int, string>(); int num = 0; foreach (var denseValue in slotNames.DenseValues()) { IDtoEmotion.Add(num++, denseValue.ToString()); } }
private static void TestSomePredictions(MLContext mlContext) { ConsoleHelper.ConsoleWriteHeader("=============== Testing prediction engine ==============="); ITransformer trainedModel = mlContext.Model.Load(ModelPath, out var modelInputSchema); // Create prediction engine related to the loaded trained model var predEngine = mlContext.Model.CreatePredictionEngine <InputData, OutputData>(trainedModel); // Get the key value mapping for Number to Score index var keyValues = default(VBuffer <float>); trainedModel.GetOutputSchema(modelInputSchema)["Number"].GetKeyValues <float>(ref keyValues); var keys = keyValues.Items().ToDictionary(x => (int)x.Value, x => x.Key); //InputData data1 = SampleMNISTData.MNIST1; var predictedResult1 = predEngine.Predict(SampleMNISTData.MNIST1); Console.WriteLine($"Actual: 1 Predicted probability: zero: {predictedResult1.Score[keys[0]]:0.####}"); Console.WriteLine($" One : {predictedResult1.Score[keys[1]]:0.####}"); Console.WriteLine($" two: {predictedResult1.Score[keys[2]]:0.####}"); Console.WriteLine($" three: {predictedResult1.Score[keys[3]]:0.####}"); Console.WriteLine($" four: {predictedResult1.Score[keys[4]]:0.####}"); Console.WriteLine($" five: {predictedResult1.Score[keys[5]]:0.####}"); Console.WriteLine($" six: {predictedResult1.Score[keys[6]]:0.####}"); Console.WriteLine($" seven: {predictedResult1.Score[keys[7]]:0.####}"); Console.WriteLine($" eight: {predictedResult1.Score[keys[8]]:0.####}"); Console.WriteLine($" nine: {predictedResult1.Score[keys[9]]:0.####}"); Console.WriteLine(); var predictedResult2 = predEngine.Predict(SampleMNISTData.MNIST2); Console.WriteLine($"Actual: 7 Predicted probability: zero: {predictedResult2.Score[keys[0]]:0.####}"); Console.WriteLine($" One : {predictedResult2.Score[keys[1]]:0.####}"); Console.WriteLine($" two: {predictedResult2.Score[keys[2]]:0.####}"); Console.WriteLine($" three: {predictedResult2.Score[keys[3]]:0.####}"); Console.WriteLine($" four: {predictedResult2.Score[keys[4]]:0.####}"); Console.WriteLine($" five: {predictedResult2.Score[keys[5]]:0.####}"); Console.WriteLine($" six: {predictedResult2.Score[keys[6]]:0.####}"); Console.WriteLine($" seven: {predictedResult2.Score[keys[7]]:0.####}"); Console.WriteLine($" eight: {predictedResult2.Score[keys[8]]:0.####}"); Console.WriteLine($" nine: {predictedResult2.Score[keys[9]]:0.####}"); Console.WriteLine(); }
public void RunMultiplePredictions(int numberOfPredictions) { var mlContext = new MLContext(); //Load data as input for predictions IDataView inputDataForPredictions = mlContext.Data.LoadFromTextFile <TransactionObservation>(_dasetFile, separatorChar: ',', hasHeader: true); Console.WriteLine($"Predictions from saved model:"); ITransformer model = mlContext.Model.Load(_modelfile, out var inputSchema); var predictionEngine = mlContext.Model.CreatePredictionEngine <TransactionObservation, TransactionFraudPredictionWithContribution>(model); Console.WriteLine($"\n \n Test {numberOfPredictions} transactions, from the test datasource, that should be predicted as fraud (true):"); mlContext.Data.CreateEnumerable <TransactionObservation>(inputDataForPredictions, reuseRowObject: false) .Where(x => x.Label == true) .Take(numberOfPredictions) .Select(testData => testData) .ToList() .ForEach(testData => { Console.WriteLine($"--- Transaction ---"); testData.PrintToConsole(); predictionEngine.Predict(testData).PrintToConsole(); Console.WriteLine($"-------------------"); }); Console.WriteLine($"\n \n Test {numberOfPredictions} transactions, from the test datasource, that should NOT be predicted as fraud (false):"); mlContext.Data.CreateEnumerable <TransactionObservation>(inputDataForPredictions, reuseRowObject: false) .Where(x => x.Label == false) .Take(numberOfPredictions) .ToList() .ForEach(testData => { Console.WriteLine($"--- Transaction ---"); testData.PrintToConsole(); predictionEngine.Predict(testData).PrintToConsole(model.GetOutputSchema(inputDataForPredictions.Schema)); Console.WriteLine($"-------------------"); }); }
public List <DataStructures.TaxiFarePrediction> RunMultiplePredictions(int numberOfPredictions) { // Load data as input for predictions. IDataView inputDataForPredictions = context.Data.LoadFromTextFile <TaxiTrip>(_datasetFile, hasHeader: true, separatorChar: ','); Console.WriteLine("Predictions from saved model:"); Console.WriteLine($"\n \n Test {numberOfPredictions} transactions, from the test datasource, that should be predicted as fraud (true):"); var transactionList = new List <DataStructures.TaxiFarePrediction>(); TaxiTripFarePredictionWithContribution prediction; DataStructures.TaxiFarePrediction explainedPrediction; context.Data.CreateEnumerable <TaxiTrip>(inputDataForPredictions, reuseRowObject: false) .Take(numberOfPredictions) .Select(testData => testData) .ToList() .ForEach(testData => { testData.PrintToConsole(); prediction = predictionEngine.Predict(testData); explainedPrediction = new DataStructures.TaxiFarePrediction(prediction.FareAmount, prediction.GetFeatureContributions(model.GetOutputSchema(inputDataForPredictions.Schema))); transactionList.Add(explainedPrediction); }); return(transactionList); }