Пример #1
0
        /// <summary>
        /// Сборка и обучение модели
        /// </summary>
        /// <param name="trainingDataView"></param>
        /// <param name="pipeline"></param>
        /// <returns></returns>
        private 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"));

            //Обучите модель на основе данных splitTrainSet и получите обученную модель
            //Метод Fit() обучает модель путем преобразования набора данных и применения обучения
            _trainedModel = trainingPipeline.Fit(trainingDataView);
            //Класс PredictionEngine представляет собой удобный API, позволяющий передать один экземпляр данных и
            //осуществить прогнозирование на его основе.
            _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.."
            };
            //Используйте функцию Predict(), которая создает прогноз по одной строке данных.
            var prediction = _predEngine.Predict(issue);

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

            return(trainingPipeline);
        }
Пример #2
0
        /// <summary>
        /// Развертывание и прогнозирование с помощью модели
        /// </summary>
        private static void PredictIssue()
        {
            //Загрузите сохраненную модель в приложение
            ITransformer loadedModel = _mlContext.Model.Load(_modelPath, out var modelInputSchema);

            // GitHub для тестирования прогноза обученной модели в методе Predict, создав экземпляр GitHubIssue:
            GitHubIssue singleIssue = new GitHubIssue()
            {
                Title       = "Entity Framework crashes",
                Description = "When connecting to the database, EF is crashing"
            };

            //создайте экземпляр PredictionEngine
            //Класс PredictionEngine представляет собой удобный API, позволяющий осуществить прогнозирование на основе единственного экземпляра данных.
            //PredictionEngine не является потокобезопасным.
            _predEngine = _mlContext.Model.CreatePredictionEngine <GitHubIssue, IssuePrediction>(loadedModel);
            //Используйте PredictionEngine для прогнозирования метки области GitHub
            var prediction = _predEngine.Predict(singleIssue);

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