public string Train(List <TrainData> data)
 {
     try {
         mlContext     = new MLContext();
         splitDataView = Metrics.Look(() => mlContext.LoadData(data));
         model         = Metrics.Look(() => mlContext.BuildAndTrainModel(splitDataView));
         return("Ok");
     } catch (Exception e) {
         return(e.StackTrace);
     }
 }
Esempio n. 2
0
        static void Main(string[] args)
        {
            var mlContext = new MLContext();

            string       dataFilePath  = Path.Combine(Environment.CurrentDirectory, @"Data\yelp_labelled.txt");
            var          splitDataView = mlContext.LoadData(dataFilePath);
            ITransformer model         = mlContext.BuildAndTrainModel(splitDataView.TrainSet);
            var          metrics       = mlContext.Evaluate(model, splitDataView.TestSet);

            Console.WriteLine("\r\n--------------- Model quality metrics evaluation ---------------");
            Console.WriteLine($"Accuracy: {metrics.Accuracy:P2}");
            Console.WriteLine($"Auc: {metrics.Auc:P2}");
            Console.WriteLine($"F1Score: {metrics.F1Score:P2}");

            string modelFilePaht = Path.Combine(Environment.CurrentDirectory, @"Data\Model.zip");

            using (var fs = new FileStream(modelFilePaht, FileMode.Create, FileAccess.Write, FileShare.Write))
            {
                mlContext.Model.Save(model, fs);
            }

            var prediction = mlContext.RunModel(model, "This was a very bad steak");

            Console.WriteLine("\r\n--------------- Single Prediction with Trained Model ---------------");
            Console.WriteLine($"This was a very bad steak. Prediction: {(Convert.ToBoolean(prediction.Prediction) ? "Positive" : "Negative")} | Probability: {prediction.Probability} ");

            var sampleTexts = new[]
            {
                "This was a horrible meal",
                "I love this spaghetti."
            };

            var predictions         = mlContext.LoadAndRunModel(modelFilePaht, sampleTexts);
            var textsAndPredictions = sampleTexts.Zip(predictions, (text, predition) => (text, prediction));

            Console.WriteLine("\r\n--------------- Batch Prediction with Loaded Model ---------------");

            foreach (var pair in textsAndPredictions)
            {
                Console.WriteLine($"{pair.text} | Prediction: {(Convert.ToBoolean(pair.prediction.Prediction) ? "Positive" : "Negative")} | Probability: {pair.prediction.Probability} ");
            }

            string lineText = Console.ReadLine();

            while (lineText != "exit")
            {
                prediction = mlContext.RunModel(model, lineText);

                Console.WriteLine($"{(Convert.ToBoolean(prediction.Prediction) ? "Positive" : "Negative")} | Probability: {prediction.Probability} ");
                lineText = Console.ReadLine();
            }
        }