示例#1
0
        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);
        }
示例#2
0
 private async Task AddAndTrainModel(FunctFieldEventTimeModel toAdd)
 {
     await CreateModel(toAdd);
 }