コード例 #1
0
        public static void PredictIssue()
        {
            // <SnippetLoadModel>
            ITransformer loadedModel;

            using (var stream = new FileStream(_modelPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                loadedModel = _mlContext.Model.Load(stream);
            }
            // </SnippetLoadModel>

            // <SnippetAddTestIssue>
            GitHubIssue singleIssue = new GitHubIssue()
            {
                Title = "Entity Framework crashes", Description = "When connecting to the database, EF is crashing"
            };

            // </SnippetAddTestIssue>

            //Predict label for single hard-coded issue
            // <SnippetCreatePredictionEngine>
            _predEngine = loadedModel.CreatePredictionEngine <GitHubIssue, IssuePrediction>(_mlContext);
            // </SnippetCreatePredictionEngine>

            // <SnippetPredictIssue>
            var prediction = _predEngine.Predict(singleIssue);

            // </SnippetPredictIssue>

            // <SnippetDisplayResults>
            Console.WriteLine($"=============== Single Prediction - Result: {prediction.Area} ===============");
            // </SnippetDisplayResults>
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: changhuixu/ML.NET_Samples
        public static IEstimator <ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator <ITransformer> pipeline)
        {
            // STEP 3: Create the training algorithm/trainer
            // Use the multi-class SDCA algorithm to predict the label using features.
            //Set the trainer/algorithm and map label to value (original readable state)
            var trainingPipeline = pipeline.Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features"))
                                   .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            Console.WriteLine($"=============== Training the model  ===============");
            _trainedModel = trainingPipeline.Fit(trainingDataView);
            Console.WriteLine($"=============== Finished Training the model Ending time: {DateTime.Now:O} ===============");

            // (OPTIONAL) Try/test a single prediction with the "just-trained model" (Before saving the model)
            Console.WriteLine($"=============== Single Prediction just-trained-model ===============");

            // Create prediction engine related to the loaded trained model
            _predEngine = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(_trainedModel);
            var issue = new GitHubIssue
            {
                Title       = "WebSockets communication is slow in my machine",
                Description = "The WebSockets communication used under the covers by SignalR looks like is going slow in my development machine.."
            };

            var prediction = _predEngine.Predict(issue);

            Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.Area} ===============");

            return(trainingPipeline);
        }
コード例 #3
0
        //STEP 6 : Deploy and Predict with a model
        private static void PredictIssue()
        {
            // <SnippetLoadModel>
            ITransformer loadedModel = _mlContext.Model.Load(_modelPath, out var modelInputSchema);
            // </SnippetLoadModel>

            // <SnippetAddTestIssue>
            GitHubIssue singleIssue = new GitHubIssue()
            {
                Title = "Entity Framework crashes", Description = "When connecting to the database, EF is crashing"
            };

            // </SnippetAddTestIssue>

            //Predict label for single hard-coded issue
            // <SnippetCreatePredictionEngine>
            _predEngine = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(loadedModel);
            // </SnippetCreatePredictionEngine>

            // <SnippetPredictIssue>
            var prediction = _predEngine.Predict(singleIssue);

            // </SnippetPredictIssue>

            // <SnippetDisplayResults>
            Console.WriteLine($"=============== Single Prediction - Result: {prediction.Area} ===============");
            // </SnippetDisplayResults>
        }
コード例 #4
0
        static void Main(String[] args)
        {
            Console.WriteLine("Hello World!");
            var config = new TrainerConfig
            {
                TrainDataPath = Path.Combine(AppContext.BaseDirectory, "Data", "issues_train.tsv"),
                TestDataPath  = Path.Combine(AppContext.BaseDirectory, "Data", "issues_test.tsv"),
                ModelPath     = Path.Combine(AppContext.BaseDirectory, "Models", "github_issues.zip"),
                Label         = "Area",
            }.WithFeature("Title").WithFeature("Description");

            var trainer = new Trainer <GitHubIssue, IssuePrediction>(config);

            Console.WriteLine("Training...");
            var model = trainer.TrainOrLoad();

            Console.WriteLine("Training...done!");
            Console.WriteLine("Evaluating...");
            trainer.Evaluate();
            Console.WriteLine("Evaluating...done!");

            trainer.Save();

            var issue = new GitHubIssue()
            {
                Title       = "WebSockets communication is slow in my machine",
                Description = "The WebSockets communication used under the covers by SignalR looks like is going slow in my development machine.."
            };

            var prediction = trainer.Predict(issue);

            Console.WriteLine($"The prediciton is...{prediction.Area}!");
            Console.ReadLine();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: varmar777/samples
        public static EstimatorChain <KeyToValueMappingTransformer> BuildAndTrainModel(IDataView trainingDataView, EstimatorChain <ITransformer> pipeline)
        {
            // STEP 3: Create the training algorithm/trainer
            // Use the multi-class SDCA model to predict the label using features.
            // <SnippetSdcaMultiClassTrainer>
            var trainer = new SdcaMultiClassTrainer(_mlContext, DefaultColumnNames.Label, DefaultColumnNames.Features);
            // </SnippetSdcaMultiClassTrainer>

            //Set the trainer/algorithm and map label to value (original readable state)
            // <SnippetAddTrainer>
            var trainingPipeline = pipeline.Append(trainer)
                                   .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            // </SnippetAddTrainer>

            // STEP 4: Train the model fitting to the DataSet
            Console.WriteLine($"=============== Training the model  ===============");

            // <SnippetTrainModel>
            _trainedModel = trainingPipeline.Fit(trainingDataView);
            // </SnippetTrainModel>
            Console.WriteLine($"=============== Finished Training the model Ending time: {DateTime.Now.ToString()} ===============");

            // (OPTIONAL) Try/test a single prediction with the "just-trained model" (Before saving the model)
            Console.WriteLine($"=============== Single Prediction just-trained-model ===============");

            // Create prediction engine related to the loaded trained model
            // <SnippetCreatePredictionEngine>
            _predEngine = _trainedModel.CreatePredictionEngine <GitHubIssue, IssuePrediction>(_mlContext);
            // </SnippetCreatePredictionEngine>
            // <SnippetCreateTestIssue1>
            GitHubIssue issue = new GitHubIssue()
            {
                Title       = "WebSockets communication is slow in my machine",
                Description = "The WebSockets communication used under the covers by SignalR looks like is going slow in my development machine.."
            };
            // </SnippetCreateTestIssue1>

            // <SnippetPredict>
            var prediction = _predEngine.Predict(issue);

            // </SnippetPredict>

            // <SnippetOutputPrediction>
            Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.Area} ===============");
            // </SnippetOutputPrediction>

            // Save the new model to .ZIP file
            // <SnippetCallSaveModel>
            SaveModelAsFile(_mlContext, _trainedModel);
            // </SnippetCallSaveModel>

            // <SnippetReturnModel>
            return(trainingPipeline);
            // </SnippetReturnModel>
        }
コード例 #6
0
        private static void PredictIssue()
        {
            var loadedModel = _mlContext.Model.Load(_modelPath, out var modelInputSchema);
            var singleIssue = new GitHubIssue()
            {
                Title = "Entity Framework crashes", Description = "When connecting to the databese, EF is crashing"
            };

            _predEngine = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(loadedModel);
            var prediction = _predEngine.Predict(singleIssue);

            Console.WriteLine($"=============== Single Prediction - Result: {prediction.Area} ===============");
        }
コード例 #7
0
        private static void PredictIssue()
        {
            ITransformer loadedModel;

            using (var stream = new FileStream(_modelPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                loadedModel = _mlContext.Model.Load(stream);
            }
            GitHubIssue singleIssue = new GitHubIssue()
            {
                Title = "Entity Framework crashes", Description = "When connecting to the database, EF is crashing"
            };

            _predEngine = loadedModel.CreatePredictionEngine <GitHubIssue, IssuePrediction>(_mlContext);
            var prediction = _predEngine.Predict(singleIssue);

            Console.WriteLine($"=============== Single Prediction - Result: {prediction.Area} ===============");
        }
コード例 #8
0
        public static IEstimator <ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator <ITransformer> pipeline)
        {
            var trainingPipeline = pipeline.Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features"))
                                   .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            _trainedModel = trainingPipeline.Fit(trainingDataView);
            _predEngine   = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(_trainedModel);

            GitHubIssue issue = new GitHubIssue()
            {
                Title       = "WebSockets communication is slow in my machine",
                Description = "The WebSckets ommunication used under the covers by SignalR looks like is going slow in my development machine.."
            };
            var prediction = _predEngine.Predict(issue);

            Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.Area} ===============");
            return(trainingPipeline);
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: CuteLeon/ML.NET-Demo
        /// <summary>
        /// 使用神经网络模型预测问题分类
        /// </summary>
        /// <param name="mlContext"></param>
        /// <param name="model"></param>
        private static void Predict(MLContext mlContext, ITransformer model)
        {
            // 创建预测引擎
            Helper.PrintLine("创建预测引擎...");
            var engine = mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(model);

            (string Title, string Description, bool Exit)inputs;
            while (!(inputs = GetInputs()).Exit)
            {
                var issue = new GitHubIssue()
                {
                    Title = inputs.Title, Description = inputs.Description
                };
                var prediction = engine.Predict(issue);
                Helper.PrintLine($"=> {prediction.Area}");
            }

            Console.ResetColor();
            Helper.PrintLine("结束预测");

            (string Title, string Description, bool Exit) GetInputs()
            {
                Console.ResetColor();
                Helper.PrintLine("输入问题标题以预测问题分类 (输入 exit 跳出预测):");
                Console.Write(">>>\t请输入:");
                Console.ForegroundColor = ConsoleColor.Yellow;
                var title = Console.ReadLine();

                if (title.ToLower() == "exit")
                {
                    return(title, string.Empty, true);
                }

                Console.ResetColor();
                Helper.PrintLine("输入问题描述以预测问题分类:");
                Console.Write(">>>\t请输入:");
                Console.ForegroundColor = ConsoleColor.Yellow;
                var description = Console.ReadLine();

                Console.ForegroundColor = ConsoleColor.Magenta;

                return(title, description, false);
            }
        }
コード例 #10
0
        static void Main(string[] args)
        {
            _mlContext = new MLContext(seed: 0);

            // Prepare Data
            _trainingDataView = _mlContext.Data.LoadFromTextFile <GitHubIssue>(_trainDataPath, hasHeader: true);

            // Prepare Pipeline
            var pipeline = _mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: "Area", outputColumnName: "Label")
                           .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: "Title", outputColumnName: "TitleFeaturized"))
                           .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: "Description", outputColumnName: "DescriptionFeaturized"))
                           .Append(_mlContext.Transforms.Concatenate("Features", "TitleFeaturized", "DescriptionFeaturized"))
                           .AppendCacheCheckpoint(_mlContext)
                           .Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features", maximumNumberOfIterations: 1000))
                           .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            // Training Model
            _trainedModel = pipeline.Fit(_trainingDataView);

            // Single Prediction
            _predEngine = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(_trainedModel);

            GitHubIssue issue = new GitHubIssue()
            {
                Title       = "WebSockets communication is slow in my machine",
                Description = "The WebSockets communication used under the covers by SignalR looks like is going slow in my development machine.."
            };

            var prediction = _predEngine.Predict(issue);

            Console.WriteLine($"=============== Single Prediction just-trained-model - Result: {prediction.Area}===============");

            // Evaluate
            var testDataView = _mlContext.Data.LoadFromTextFile <GitHubIssue>(_testDataPath, hasHeader: true);
            var testMetrics  = _mlContext.MulticlassClassification.Evaluate(_trainedModel.Transform(testDataView));

            Console.WriteLine($"*************************************************************************************************************");
            Console.WriteLine($"* Metrics for Multi-class Classification model - Test Data ");
            Console.WriteLine($"*----------------------------------------------------------------------------------------------------------- - ");
            Console.WriteLine($"* MicroAccuracy: {testMetrics.MicroAccuracy:0.###}");
            Console.WriteLine($"* MacroAccuracy: {testMetrics.MacroAccuracy:0.###}");
            Console.WriteLine($"* LogLoss: {testMetrics.LogLoss:#.###}");
            Console.WriteLine($"* LogLossReduction: {testMetrics.LogLossReduction:#.###}");
            Console.WriteLine($"*************************************************************************************************************");

            // Save Model
            _mlContext.Model.Save(_trainedModel, _trainingDataView.Schema, _modelPath);

            // Predict Issue
            ITransformer loadedModel = _mlContext.Model.Load(_modelPath, out var modelInputSchema);

            GitHubIssue singleIssue = new GitHubIssue()
            {
                //Title = "socket 중계 서버..",
                //Description = "오랜만에 질문 올립니다.  tcp socket 중계 서버를 만들어야 하는데요..  간단하게 얘기하면 n개의 장비가 있고 n개의 컨트롤 시스템이 존재 각 장비는 지정 컨트롤 시스템과 정보 송/수신. 말하자면 1:1의 양방향 통신이 n개가 관리 가능해야 한다는 얘긴데 .  socket.poll, threadPool.. 등등... 뭘 어찌 구현할지 좀 감이 안오네요. 비슷한 구현 해보신 분 힌트좀 주세요..."
                Title       = "오랜만에 송년회 어떠세요?",
                Description = "참석하고 싶은 마음이 불처럼 타오르는 분들 계신가요!!!!"
            };

            _predEngine = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(loadedModel);
            var prediction2 = _predEngine.Predict(singleIssue);

            Console.WriteLine($"=============== Single Prediction - Result: {prediction2.Area} ===============");
        }