/// <summary> /// Initializes a new instance of the <see cref="MLModelTrainer"/> class. /// </summary> /// <param name="userConnection">The user connection.</param> /// <param name="modelConfig">The model configuration.</param> public MLModelTrainer(UserConnection userConnection, MLModelConfig modelConfig) { userConnection.CheckArgumentNull("userConnection"); modelConfig.CheckArgumentNull("modelConfig"); modelConfig.Id.CheckArgumentEmpty("MLModelConfig.Id"); _userConnection = userConnection; _modelConfig = modelConfig; _proxy = InitServiceProxy(); ConstructorArgument userConnectionArg = new ConstructorArgument("userConnection", _userConnection); _modelEventsNotifier = ClassFactory.Get <MLModelEventsNotifier>(userConnectionArg); _metadataGenerator = ClassFactory.Get <IMLMetadataGenerator>(); _queryBuilder = ClassFactory.Get <IMLModelQueryBuilder>(userConnectionArg); }
/// <summary> /// Sets human-readable localized captions and display values for feature weights. /// </summary> /// <param name="userConnection">The user connection.</param> /// <param name="features">The features.</param> /// <param name="modelId">The model identifier.</param> /// <param name="isPrediction"><c>true</c> if it's for prediction, false - for training.</param> public static void LocalizeFeatures(UserConnection userConnection, List <LocalizedFeatureWeight> features, Guid modelId, bool isPrediction) { IMLModelLoader loader = ClassFactory.Get <IMLModelLoader>(); if (!loader.TryLoadModel(userConnection, modelId, out MLModelConfig model)) { return; } loader.LoadModelMetadataCaptions(userConnection, model); var modelQueryBuilder = ClassFactory.Get <IMLModelQueryBuilder>( new ConstructorArgument("userConnection", userConnection)); var query = isPrediction ? model.BatchPredictionQuery : model.TrainingSetQuery; var select = modelQueryBuilder.BuildSelect(model.EntitySchemaId, query, model.ColumnExpressions); IMLMetadataGenerator metadataGenerator = ClassFactory.Get <IMLMetadataGenerator>(); var metadata = metadataGenerator.GenerateMetadata(select, model.MetaData, fillColumnsInfo: true); var columnExpressionMapping = modelQueryBuilder.GetColumnExpressionMapping(model.EntitySchemaId, query, model.ColumnExpressions); FillCaptions(userConnection, features, columnExpressionMapping, model.EntitySchemaId, metadata); FillDisplayValues(userConnection, features, columnExpressionMapping, model.EntitySchemaId, metadata); }