private async Task <ITransformer> CreateModel(FunctFieldEventTimeModel toAdd = null) { MatrixFactorizationTrainer.Options options = new MatrixFactorizationTrainer.Options { MatrixColumnIndexColumnName = nameof(FunctFieldEventTimeModel.FunctionalFieldId), MatrixRowIndexColumnName = nameof(FunctFieldEventTimeModel.EventTimeUid), LabelColumnName = "Label", LossFunction = MatrixFactorizationTrainer.LossFunctionType.SquareLossOneClass, Alpha = 0.01, Lambda = 0.025 }; var est = mlContext.Recommendation().Trainers.MatrixFactorization(options); var dataFromDb = await _dbContext.Events.Select(x => new FunctFieldEventTimeModel { FunctionalFieldId = (uint)x.FunctionalFieldId, EventTimeUid = x.TimeUid }).ToListAsync(); if (toAdd != null) { dataFromDb.Add(toAdd); } var dataView = mlContext.Data.LoadFromEnumerable(dataFromDb); var model = est.Fit(dataView); return(model); }
private async Task AddAndTrainModel(FunctFieldEventTimeModel toAdd) { await CreateModel(toAdd); }