public void Ml() { var mlContext = new MLContext(); // Если работаете в Visual Studio, убедитесь, что параметр 'Copy to Output Directory' // iris-data.txt установлен как 'Copy always' var reader = mlContext.Data.CreateTextReader <InputData>(separatorChar: '}', hasHeader: true); Microsoft.ML.Data.IDataView trainingDataView = reader.Read(path: @"C:\Users\Admin\source\repos\CHAKATON\Alpha.netf\ML\new.txt"); // Шаг 3: Преобразуйте свои данные и добавьте learner // Присвойте числовые значения тексту в столбце «label», потому что только // числа могут быть обработаны во время обучения модели. // Добавьте обучающий алгоритм в pipeline. Например (What type of iris is this?) // Преобразовать label обратно в исходный текст (после преобразования в число на шаге 3) var pipeline = mlContext.Transforms.Concatenate("IndustryOrg", "Region", "SmallIndustryOrg"); // Шаг 4: обучите модель на этом дата-сете var model = pipeline.Fit(trainingDataView); // Шаг 5: используйте модель для предсказания // Вы можете изменить эти цифры, чтобы проверить разные прогнозы var prediction = model.CreatePredictionEngine <InputData, OptionCarePrediction>(mlContext).Predict( new InputData() { IndustryOrg = "Автомобильная промышленность [246]", Region = "Тамбовская область", SmallIndustryOrg = "Производство автотранспортных средств", }); Console.WriteLine($"Predicted flower type is: {prediction.PredictedLabels}"); }
public ExtendedCacheTransform(IHostEnvironment env, Arguments args, IDataView input) : base(env, RegistrationName, input) { Host.CheckValue(args, "args"); Host.CheckUserArg(args.inDataFrame || !string.IsNullOrEmpty(args.cacheFile), "cacheFile cannot be empty if inDataFrame is false."); Host.CheckUserArg(!args.async || args.inDataFrame, "inDataFrame must be true if async is true."); Host.CheckUserArg(!args.numTheads.HasValue || args.numTheads > 0, "numThread must be > 0 if specified."); var saverSettings = args.saverSettings as ICommandLineComponentFactory; Host.CheckValue(saverSettings, nameof(saverSettings)); _saverSettings = string.Format("{0}{{{1}}}", saverSettings.Name, saverSettings.GetSettingsString()); _saverSettings = _saverSettings.Replace("{}", ""); if (!_saverSettings.ToLower().StartsWith("binary")) { throw env.ExceptNotSupp("Only binary format is supported."); } _inDataFrame = args.inDataFrame; _cacheFile = args.cacheFile; _reuse = args.reuse; _async = args.async; _numThreads = args.numTheads; var saver = ComponentCreation.CreateSaver(Host, _saverSettings); if (saver == null) { throw Host.Except("Cannot parse '{0}'", _saverSettings); } _pipedTransform = CreatePipeline(env, input); }
static void Main(string[] args) { // Шаг 2: создание среды ML.NET var mlContext = new MLContext(); // Если работаете в Visual Studio, убедитесь, что параметр 'Copy to Output Directory' // iris-data.txt установлен как 'Copy always' var reader = mlContext.Data.CreateTextReader <IrisData>(separatorChar: ',', hasHeader: true); Microsoft.ML.Data.IDataView trainingDataView = reader.Read("iris.data"); // Шаг 3: Преобразуйте свои данные и добавьте learner // Присвойте числовые значения тексту в столбце «label», потому что только // числа могут быть обработаны во время обучения модели. // Добавьте обучающий алгоритм в pipeline. Например (What type of iris is this?) // Преобразовать label обратно в исходный текст (после преобразования в число на шаге 3) var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label") .Append(mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth")) .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumn: "Label", featureColumn: "Features")) .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel")); // Шаг 4: обучите модель на этом дата-сете var model = pipeline.Fit(trainingDataView); // Шаг 5: используйте модель для предсказания string input = string.Empty; string exit = String.Empty; while (exit != "x") { Console.Clear(); Console.WriteLine("Enter data:"); input = Console.ReadLine(); string[] arr = input.Split(','); float a = float.Parse(arr[0], CultureInfo.InvariantCulture.NumberFormat); float b = float.Parse(arr[1], CultureInfo.InvariantCulture.NumberFormat); float c = float.Parse(arr[2], CultureInfo.InvariantCulture.NumberFormat); float d = float.Parse(arr[3], CultureInfo.InvariantCulture.NumberFormat); var prediction = model.CreatePredictionEngine <IrisData, IrisPrediction>(mlContext).Predict( new IrisData() { SepalLength = a, SepalWidth = b, PetalLength = c, PetalWidth = d, }); Console.WriteLine($"Predicted flower type is: {prediction.PredictedLabels}"); Console.WriteLine($"Press \"x\" to exit, any other for continue."); exit = Console.ReadLine(); } }
public SortInDataFrameState(IHostEnvironment host, IDataView input, int sortColumn, bool reverse, int?numThreads) { _host = host.Register("SortInDataFrameState"); _host.CheckValue(input, "input"); _source = input; _reverse = reverse; _lock = new object(); _autoView = null; _canShuffle = sortColumn < 0; _numThreads = numThreads; _sortColumn = sortColumn; }
/// <summary> /// Creation of the pipeline knowing parameters _inDataFrame, _cacheFile, _reuse. /// </summary> protected IDataTransform CreatePipeline(IHostEnvironment env, IDataView input) { if (_inDataFrame) { if (_async) { var view = new CacheDataView(env, input, null); var tr = new PassThroughTransform(env, new PassThroughTransform.Arguments(), view); return(tr); } else { var args = new SortInDataFrameTransform.Arguments() { numThreads = _numThreads, sortColumn = null }; var tr = new SortInDataFrameTransform(env, args, input); return(tr); } } else { string nt = _numThreads > 0 ? string.Format("{{t={0}}}", _numThreads) : string.Empty; using (var ch = Host.Start("Caching data...")) { if (_reuse && File.Exists(_cacheFile)) { ch.Info(MessageSensitivity.UserData, "Reusing cache '{0}'", _cacheFile); } else { ch.Info(MessageSensitivity.UserData, "Building cache '{0}'", _cacheFile); var saver = ComponentCreation.CreateSaver(env, _saverSettings); using (var fs0 = Host.CreateOutputFile(_cacheFile)) DataSaverUtils.SaveDataView(ch, saver, input, fs0, true); } } var loader = ComponentCreation.CreateLoader(env, string.Format("binary{{{0}}}", nt), new MultiFileSource(_cacheFile)); SchemaHelper.CheckSchema(Host, input.Schema, loader.Schema); var copy = ComponentCreation.CreateTransform(env, "skip{s=0}", loader); return(copy); } }
public SortInDataFrameTransform(IHostEnvironment env, Arguments args, IDataView input) : base(env, RegistrationName, input) { Host.CheckValue(args, "args"); Host.CheckUserArg(!args.numThreads.HasValue || args.numThreads.Value > 0, "numThreads cannot be negative."); if (!string.IsNullOrEmpty(args.sortColumn)) { var schema = input.Schema; int index = SchemaHelper.GetColumnIndex(schema, args.sortColumn); var type = schema[index].Type; Host.Check(!type.IsVector(), "sortColumn cannot be a vector."); } _reverse = args.reverse; _sortColumn = args.sortColumn; _numThreads = args.numThreads; _transform = CreateTemplatedTransform(); }
private SortInDataFrameTransform(IHost host, ModelLoadContext ctx, IDataView input) : base(host, input) { Host.CheckValue(input, "input"); Host.CheckValue(ctx, "ctx"); _sortColumn = ctx.Reader.ReadString(); Host.AssertValue(_sortColumn); var schema = input.Schema; int index = SchemaHelper.GetColumnIndex(schema, _sortColumn); var type = schema[index].Type; Host.Check(!type.IsVector(), "sortColumn cannot be a vector."); _reverse = ctx.Reader.ReadBoolean(); _numThreads = ctx.Reader.ReadInt32(); if (_numThreads < 0) { _numThreads = null; } _transform = CreateTemplatedTransform(); }
private ExtendedCacheTransform(IHost host, ModelLoadContext ctx, IDataView input) : base(host, input) { Host.CheckValue(input, "input"); Host.CheckValue(ctx, "ctx"); _inDataFrame = ctx.Reader.ReadBoolean(); _async = ctx.Reader.ReadBoolean(); _numThreads = ctx.Reader.ReadInt32(); host.Check(_numThreads > -2, "_numThreads"); if (_numThreads < 0) { _numThreads = null; } _saverSettings = ctx.Reader.ReadString(); if (_inDataFrame) { _cacheFile = null; _reuse = false; } else { _cacheFile = ctx.Reader.ReadString(); _reuse = ctx.Reader.ReadBoolean(); host.CheckValue(_cacheFile, "_cacheFile"); } var saver = ComponentCreation.CreateSaver(Host, _saverSettings); if (saver == null) { throw Host.Except("Cannot parse '{0}'", _saverSettings); } _pipedTransform = CreatePipeline(host, input); }
public static SortInDataFrameTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input) { Contracts.CheckValue(env, "env"); var h = env.Register(RegistrationName); h.CheckValue(ctx, "ctx"); h.CheckValue(input, "input"); ctx.CheckAtModel(GetVersionInfo()); return(h.Apply("Loading Model", ch => new SortInDataFrameTransform(h, ctx, input))); }