| File: TrainerExtensions\RecommendationTrainerExtensions.cs | Web Access |
| Project: src\src\Microsoft.ML.AutoML\Microsoft.ML.AutoML.csproj (Microsoft.ML.AutoML) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Collections.Generic; using Microsoft.ML.Trainers; namespace Microsoft.ML.AutoML { using ITrainerEsitmator = ITrainerEstimator<IPredictionTransformer<object>, object>; internal class MatrixFactorizationExtension : ITrainerExtension { public ITrainerEsitmator CreateInstance(MLContext mlContext, IEnumerable<SweepableParam> sweepParams, ColumnInformation columnInfo, IDataView validationSet) { var options = TrainerExtensionUtil.CreateOptions<MatrixFactorizationTrainer.Options>(sweepParams); options.LabelColumnName = columnInfo.LabelColumnName; options.MatrixColumnIndexColumnName = columnInfo.UserIdColumnName; options.MatrixRowIndexColumnName = columnInfo.ItemIdColumnName; options.Quiet = true; return mlContext.Recommendation().Trainers.MatrixFactorization(options); } public PipelineNode CreatePipelineNode(IEnumerable<SweepableParam> sweepParams, ColumnInformation columnInfo) { var property = new Dictionary<string, object>(); property.Add(nameof(MatrixFactorizationTrainer.Options.MatrixColumnIndexColumnName), columnInfo.UserIdColumnName); property.Add(nameof(MatrixFactorizationTrainer.Options.MatrixRowIndexColumnName), columnInfo.ItemIdColumnName); return TrainerExtensionUtil.BuildPipelineNode(TrainerExtensionCatalog.GetTrainerName(this), sweepParams, columnInfo.LabelColumnName, additionalProperties: property); } public IEnumerable<SweepableParam> GetHyperparamSweepRanges() { return SweepableParams.BuildMatrixFactorizationParams(); } } }