/// <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); }
/// <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} ==============="); }