Exemplo n.º 1
0
 public IActionResult Get(long id)
 {
     return(Ok(
                _dataSetPredictService.GetListNoTracking(
                    x => x.DataSetId == id,
                    orderBys: _dataSetPredictService.CreateOrderBys(new OrderByDescending <DataSetPredict, long>(x => x.Id)),
                    take: 100)));
 }
Exemplo n.º 2
0
        public async Task <IActionResult> Train([FromRoute] long id, IFormFile file)
        {
            if (file == null)
            {
                throw new ArgumentNullException(nameof(file));
            }

            if (id == 0)
            {
                throw new ArgumentException(nameof(id));
            }

            var datasetNetwork = _dataSetNetworkService.GetSingleNoTracking(x => x.DataSetId == id && x.DeleteDate == null, includes: _dataSetNetworkService.CreateIncludes(x => x.FileEntry));

            var fileEntry = await _fileHandlerService.Upload(file);

            _dataSetFileEntryService.Create(new DataSetFileEntryModel {
                FileEntryId = fileEntry.Id, DataSetId = id, DataSetType = DataSetType.Train
            });

            var sourceFilePath = Path.Combine(_fileSystemOptions.Value.Content, fileEntry.Name);
            var sourceFile     = new FileInfo(sourceFilePath);
            var filename       = Path.GetFileNameWithoutExtension(sourceFilePath);

            var network = new Network {
                BaseFile               = new FileInfo(sourceFilePath),
                ShuffledFile           = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{ filename }.shuffled.csv")),
                TrainingFile           = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{ filename }.training.csv")),
                EvaluateFile           = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{ filename }.evaluate.csv")),
                NormalizedTrainingFile = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{filename}.normalized.training.csv")),
                NormalizedEvaluateFile = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{filename}.normalized.evaluate.csv")),
                AnalystFile            = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{filename}.analyst.ega")),
                EvaluateFileOutput     = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, $"{filename}.evaluate.out.csv")),
                TrainedNetworkFile     = new FileInfo(Path.Combine(_fileSystemOptions.Value.Content, datasetNetwork == null ? $"{Guid.NewGuid().ToString()}.eg" : datasetNetwork.FileEntry.Name))
            };

            network
            .Shuffle()
            .Segregate()
            .Normalize()
            .CreateNetwork()
            .TrainNetwork()
            .Evaluate();

            _dataSetNetworkService.Update(x => x.DataSetId == id && x.DeleteDate == null, action: x => x.DeleteDate = DateTime.UtcNow);
            datasetNetwork = _dataSetNetworkService.Create(new DataSetNetworkModel {
                FileEntry = new FileEntryModel {
                    Extension   = network.TrainedNetworkFile.Extension,
                    FileName    = network.TrainedNetworkFile.Name,
                    Name        = network.TrainedNetworkFile.Name,
                    Length      = network.TrainedNetworkFile.Length,
                    Description = "The current dataset network state."
                },
                Error     = network.Error,
                DataSetId = id
            });

            var dataSetPredicts = network.PredictResult.Select(x => new DataSetPredictModel {
                DataSetId = id, Predict = x.Predict, Target = x.Target
            }).ToList();

            _dataSetPredictService.CreateBulk(dataSetPredicts);

            var dataSetItems = _parser.Parse(sourceFilePath);

            dataSetItems = _dataSetItemService.Create(dataSetItems.Select(x => {
                x.InsertDate = DateTime.UtcNow;
                return(x);
            }).ToList(), id);

            return(Ok(new {
                FileEntry = fileEntry,

                DataSetItemModels = dataSetItems.Take(100),

                DataSetNetworks = _dataSetNetworkService.GetListNoTracking(
                    x => x.DataSetId == id,
                    orderBys: _dataSetNetworkService.CreateOrderBys(new OrderByDescending <DataSetNetwork, long>(x => x.Id)),
                    includes: _dataSetNetworkService.CreateIncludes(x => x.FileEntry)).Take(1000),

                DataSetPredicts = _dataSetPredictService.GetListNoTracking(
                    x => x.DataSetId == id,
                    orderBys: _dataSetPredictService.CreateOrderBys(new OrderByDescending <DataSetPredict, long>(x => x.Id))).Take(1000),
            }));
        }