diff --git a/src/Microsoft.ML.Core/CommandLine/CmdLexer.cs b/src/Microsoft.ML.Core/CommandLine/CmdLexer.cs index a5c14259a8..7dc81ea8d2 100644 --- a/src/Microsoft.ML.Core/CommandLine/CmdLexer.cs +++ b/src/Microsoft.ML.Core/CommandLine/CmdLexer.cs @@ -302,7 +302,8 @@ public static string UnquoteValue(string str) } } - public sealed class CmdQuoter + [BestFriend] + internal sealed class CmdQuoter { private readonly string _str; private StringBuilder _sb; diff --git a/src/Microsoft.ML.Core/CommandLine/CmdParser.cs b/src/Microsoft.ML.Core/CommandLine/CmdParser.cs index 81018dad3e..30ad079c13 100644 --- a/src/Microsoft.ML.Core/CommandLine/CmdParser.cs +++ b/src/Microsoft.ML.Core/CommandLine/CmdParser.cs @@ -537,16 +537,10 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) private static ArgumentAttribute GetAttribute(FieldInfo field) { - var attrs = field.GetCustomAttributes(typeof(ArgumentAttribute), false).ToArray(); - if (attrs.Length == 1) - { - var argumentAttribute = (ArgumentAttribute)attrs[0]; - if (argumentAttribute.Visibility == ArgumentAttribute.VisibilityType.EntryPointsOnly) - return null; - return argumentAttribute; - } - Contracts.Assert(attrs.Length == 0); - return null; + var argumentAttribute = field.GetCustomAttribute(false); + if (argumentAttribute?.Visibility == ArgumentAttribute.VisibilityType.EntryPointsOnly) + return null; + return argumentAttribute; } private void ReportUnrecognizedArgument(string argument) diff --git a/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs b/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs index d0ab610a60..d022a63eab 100644 --- a/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs +++ b/src/Microsoft.ML.Core/ComponentModel/ComponentCatalog.cs @@ -40,7 +40,8 @@ internal ComponentCatalog() /// /// Provides information on an instantiatable component, aka, loadable class. /// - public sealed class LoadableClassInfo + [BestFriend] + internal sealed class LoadableClassInfo { /// /// Used for dictionary lookup based on signature and name. @@ -264,7 +265,8 @@ public object CreateArguments() /// /// A description of a single entry point. /// - public sealed class EntryPointInfo + [BestFriend] + internal sealed class EntryPointInfo { public readonly string Name; public readonly string Description; @@ -333,7 +335,8 @@ private Type[] FindEntryPointKinds(Type type) /// The 'component' is a non-standalone building block that is used to parametrize entry points or other ML.NET components. /// For example, 'Loss function', or 'similarity calculator' could be components. /// - public sealed class ComponentInfo + [BestFriend] + internal sealed class ComponentInfo { public readonly string Name; public readonly string Description; @@ -616,7 +619,8 @@ public void RegisterAssembly(Assembly assembly, bool throwOnError = true) /// Return an array containing information for all instantiatable components. /// If provided, the given set of assemblies is loaded first. /// - public LoadableClassInfo[] GetAllClasses() + [BestFriend] + internal LoadableClassInfo[] GetAllClasses() { return _classes.ToArray(); } @@ -625,7 +629,8 @@ public LoadableClassInfo[] GetAllClasses() /// Return an array containing information for instantiatable components with the given /// signature and base type. If provided, the given set of assemblies is loaded first. /// - public LoadableClassInfo[] GetAllDerivedClasses(Type typeBase, Type typeSig) + [BestFriend] + internal LoadableClassInfo[] GetAllDerivedClasses(Type typeBase, Type typeSig) { Contracts.CheckValue(typeBase, nameof(typeBase)); Contracts.CheckValueOrNull(typeSig); @@ -643,7 +648,8 @@ public LoadableClassInfo[] GetAllDerivedClasses(Type typeBase, Type typeSig) /// Return an array containing all the known signature types. If provided, the given set of assemblies /// is loaded first. /// - public Type[] GetAllSignatureTypes() + [BestFriend] + internal Type[] GetAllSignatureTypes() { return _signatures.Select(kvp => kvp.Key).ToArray(); } @@ -651,7 +657,8 @@ public Type[] GetAllSignatureTypes() /// /// Returns a string name for a given signature type. /// - public static string SignatureToString(Type sig) + [BestFriend] + internal static string SignatureToString(Type sig) { Contracts.CheckValue(sig, nameof(sig)); Contracts.CheckParam(sig.BaseType == typeof(MulticastDelegate), nameof(sig), "Must be a delegate type"); @@ -670,7 +677,8 @@ private LoadableClassInfo FindClassCore(LoadableClassInfo.Key key) return null; } - public LoadableClassInfo[] FindLoadableClasses(string name) + [BestFriend] + internal LoadableClassInfo[] FindLoadableClasses(string name) { name = name.ToLowerInvariant().Trim(); @@ -680,14 +688,16 @@ public LoadableClassInfo[] FindLoadableClasses(string name) return res; } - public LoadableClassInfo[] FindLoadableClasses() + [BestFriend] + internal LoadableClassInfo[] FindLoadableClasses() { return _classes .Where(ci => ci.SignatureTypes.Contains(typeof(TSig))) .ToArray(); } - public LoadableClassInfo[] FindLoadableClasses() + [BestFriend] + internal LoadableClassInfo[] FindLoadableClasses() { // REVIEW: this and above methods perform a linear search over all the loadable classes. // On 6/15/2015, TLC release build contained 431 of them, so adding extra lookups looks unnecessary at this time. @@ -696,12 +706,14 @@ public LoadableClassInfo[] FindLoadableClasses() .ToArray(); } - public LoadableClassInfo GetLoadableClassInfo(string loadName) + [BestFriend] + internal LoadableClassInfo GetLoadableClassInfo(string loadName) { return GetLoadableClassInfo(loadName, typeof(TSig)); } - public LoadableClassInfo GetLoadableClassInfo(string loadName, Type signatureType) + [BestFriend] + internal LoadableClassInfo GetLoadableClassInfo(string loadName, Type signatureType) { Contracts.CheckParam(signatureType.BaseType == typeof(MulticastDelegate), nameof(signatureType), "signatureType must be a delegate type"); Contracts.CheckValueOrNull(loadName); @@ -712,18 +724,21 @@ public LoadableClassInfo GetLoadableClassInfo(string loadName, Type signatureTyp /// /// Get all registered entry points. /// - public IEnumerable AllEntryPoints() + [BestFriend] + internal IEnumerable AllEntryPoints() { return _entryPoints.AsEnumerable(); } - public bool TryFindEntryPoint(string name, out EntryPointInfo entryPoint) + [BestFriend] + internal bool TryFindEntryPoint(string name, out EntryPointInfo entryPoint) { Contracts.CheckNonEmpty(name, nameof(name)); return _entryPointMap.TryGetValue(name, out entryPoint); } - public bool TryFindComponent(string kind, string alias, out ComponentInfo component) + [BestFriend] + internal bool TryFindComponent(string kind, string alias, out ComponentInfo component) { Contracts.CheckNonEmpty(kind, nameof(kind)); Contracts.CheckNonEmpty(alias, nameof(alias)); @@ -733,7 +748,8 @@ public bool TryFindComponent(string kind, string alias, out ComponentInfo compon return _componentMap.TryGetValue($"{kind}:{alias}", out component); } - public bool TryFindComponent(Type argumentType, out ComponentInfo component) + [BestFriend] + internal bool TryFindComponent(Type argumentType, out ComponentInfo component) { Contracts.CheckValue(argumentType, nameof(argumentType)); @@ -741,7 +757,8 @@ public bool TryFindComponent(Type argumentType, out ComponentInfo component) return component != null; } - public bool TryFindComponent(Type interfaceType, Type argumentType, out ComponentInfo component) + [BestFriend] + internal bool TryFindComponent(Type interfaceType, Type argumentType, out ComponentInfo component) { Contracts.CheckValue(interfaceType, nameof(interfaceType)); Contracts.CheckParam(interfaceType.IsInterface, nameof(interfaceType), "Must be interface"); @@ -751,7 +768,8 @@ public bool TryFindComponent(Type interfaceType, Type argumentType, out Componen return component != null; } - public bool TryFindComponent(Type interfaceType, string alias, out ComponentInfo component) + [BestFriend] + internal bool TryFindComponent(Type interfaceType, string alias, out ComponentInfo component) { Contracts.CheckValue(interfaceType, nameof(interfaceType)); Contracts.CheckParam(interfaceType.IsInterface, nameof(interfaceType), "Must be interface"); @@ -764,7 +782,8 @@ public bool TryFindComponent(Type interfaceType, string alias, out ComponentInfo /// Akin to , except if the regular (case sensitive) comparison fails, it will /// attempt to back off to a case-insensitive comparison. /// - public bool TryFindComponentCaseInsensitive(Type interfaceType, string alias, out ComponentInfo component) + [BestFriend] + internal bool TryFindComponentCaseInsensitive(Type interfaceType, string alias, out ComponentInfo component) { Contracts.CheckValue(interfaceType, nameof(interfaceType)); Contracts.CheckParam(interfaceType.IsInterface, nameof(interfaceType), "Must be interface"); @@ -786,7 +805,8 @@ private static bool AnyMatch(string name, string[] aliases) /// /// Returns all valid component kinds. /// - public IEnumerable GetAllComponentKinds() + [BestFriend] + internal IEnumerable GetAllComponentKinds() { return _components.Select(x => x.Kind).Distinct().OrderBy(x => x); } @@ -794,7 +814,8 @@ public IEnumerable GetAllComponentKinds() /// /// Returns all components of the specified kind. /// - public IEnumerable GetAllComponents(string kind) + [BestFriend] + internal IEnumerable GetAllComponents(string kind) { Contracts.CheckNonEmpty(kind, nameof(kind)); Contracts.CheckParam(IsValidName(kind), nameof(kind), "Invalid component kind"); @@ -804,13 +825,15 @@ public IEnumerable GetAllComponents(string kind) /// /// Returns all components that implement the specified interface. /// - public IEnumerable GetAllComponents(Type interfaceType) + [BestFriend] + internal IEnumerable GetAllComponents(Type interfaceType) { Contracts.CheckValue(interfaceType, nameof(interfaceType)); return _components.Where(x => x.InterfaceType == interfaceType).OrderBy(x => x.Name); } - public bool TryGetComponentKind(Type signatureType, out string kind) + [BestFriend] + internal bool TryGetComponentKind(Type signatureType, out string kind) { Contracts.CheckValue(signatureType, nameof(signatureType)); // REVIEW: replace with a dictionary lookup. @@ -821,7 +844,8 @@ public bool TryGetComponentKind(Type signatureType, out string kind) return faceAttr != null; } - public bool TryGetComponentShortName(Type type, out string name) + [BestFriend] + internal bool TryGetComponentShortName(Type type, out string name) { ComponentInfo component; if (!TryFindComponent(type, out component)) @@ -850,7 +874,8 @@ private static bool IsValidName(string name) /// /// Create an instance of the indicated component with the given extra parameters. /// - public static TRes CreateInstance(IHostEnvironment env, Type signatureType, string name, string options, params object[] extra) + [BestFriend] + internal static TRes CreateInstance(IHostEnvironment env, Type signatureType, string name, string options, params object[] extra) where TRes : class { TRes result; @@ -863,13 +888,15 @@ public static TRes CreateInstance(IHostEnvironment env, Type signatureType /// Try to create an instance of the indicated component and settings with the given extra parameters. /// If there is no such component in the catalog, returns false. Any other error results in an exception. /// - public static bool TryCreateInstance(IHostEnvironment env, out TRes result, string name, string options, params object[] extra) + [BestFriend] + internal static bool TryCreateInstance(IHostEnvironment env, out TRes result, string name, string options, params object[] extra) where TRes : class { return TryCreateInstance(env, typeof(TSig), out result, name, options, extra); } - private static bool TryCreateInstance(IHostEnvironment env, Type signatureType, out TRes result, string name, string options, params object[] extra) + [BestFriend] + internal static bool TryCreateInstance(IHostEnvironment env, Type signatureType, out TRes result, string name, string options, params object[] extra) where TRes : class { Contracts.CheckValue(env, nameof(env)); diff --git a/src/Microsoft.ML.Core/ComponentModel/ComponentFactory.cs b/src/Microsoft.ML.Core/ComponentModel/ComponentFactory.cs index 58ea3c6baf..25165f62c9 100644 --- a/src/Microsoft.ML.Core/ComponentModel/ComponentFactory.cs +++ b/src/Microsoft.ML.Core/ComponentModel/ComponentFactory.cs @@ -48,7 +48,8 @@ public interface IComponentFactory /// /// A utility class for creating instances. /// - public static class ComponentFactoryUtils + [BestFriend] + internal static class ComponentFactoryUtils { /// /// Creates a component factory with no extra parameters (other than an ) diff --git a/src/Microsoft.ML.Core/ComponentModel/LoadableClassAttribute.cs b/src/Microsoft.ML.Core/ComponentModel/LoadableClassAttribute.cs index 328a48be2b..bd0be7f84e 100644 --- a/src/Microsoft.ML.Core/ComponentModel/LoadableClassAttribute.cs +++ b/src/Microsoft.ML.Core/ComponentModel/LoadableClassAttribute.cs @@ -12,10 +12,12 @@ namespace Microsoft.ML.Runtime /// /// Common signature type with no extra parameters. /// - public delegate void SignatureDefault(); + [BestFriend] + internal delegate void SignatureDefault(); [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] - public sealed class LoadableClassAttribute : LoadableClassAttributeBase + [BestFriend] + internal sealed class LoadableClassAttribute : LoadableClassAttributeBase { /// /// Assembly attribute used to specify that a class is loadable by a machine learning @@ -98,7 +100,7 @@ public LoadableClassAttribute(string summary, Type instType, Type loaderType, Ty } } - public abstract class LoadableClassAttributeBase : Attribute + internal abstract class LoadableClassAttributeBase : Attribute { // Note: these properties have private setters to make attribute parsing easier - the values // are all guaranteed to be in the ConstructorArguments of the CustomAttributeData diff --git a/src/Microsoft.ML.Core/Data/DataKind.cs b/src/Microsoft.ML.Core/Data/DataKind.cs index c20d9930af..b52d5d7587 100644 --- a/src/Microsoft.ML.Core/Data/DataKind.cs +++ b/src/Microsoft.ML.Core/Data/DataKind.cs @@ -52,7 +52,8 @@ public enum DataKind : byte /// /// Extension methods related to the DataKind enum. /// - public static class DataKindExtensions + [BestFriend] + internal static class DataKindExtensions { public const DataKind KindMin = DataKind.I1; public const DataKind KindLim = DataKind.U16 + 1; diff --git a/src/Microsoft.ML.Core/Data/IHostEnvironment.cs b/src/Microsoft.ML.Core/Data/IHostEnvironment.cs index 3f93005544..bfff2459ef 100644 --- a/src/Microsoft.ML.Core/Data/IHostEnvironment.cs +++ b/src/Microsoft.ML.Core/Data/IHostEnvironment.cs @@ -233,7 +233,8 @@ public interface IChannel : IPipe /// that do not belong in more specific areas, for example, or /// component creation. /// - public static class HostExtensions + [BestFriend] + internal static class HostExtensions { public static T Apply(this IHost host, string channelName, Func func) { diff --git a/src/Microsoft.ML.Core/Data/IValueMapper.cs b/src/Microsoft.ML.Core/Data/IValueMapper.cs index d0b8d4b755..f5e194cd80 100644 --- a/src/Microsoft.ML.Core/Data/IValueMapper.cs +++ b/src/Microsoft.ML.Core/Data/IValueMapper.cs @@ -9,13 +9,15 @@ namespace Microsoft.ML.Runtime.Data /// /// Delegate type to map/convert a value. /// - public delegate void ValueMapper(in TSrc src, ref TDst dst); + [BestFriend] + internal delegate void ValueMapper(in TSrc src, ref TDst dst); /// /// Delegate type to map/convert among three values, for example, one input with two /// outputs, or two inputs with one output. /// - public delegate void ValueMapper(in TVal1 val1, ref TVal2 val2, ref TVal3 val3); + [BestFriend] + internal delegate void ValueMapper(in TVal1 val1, ref TVal2 val2, ref TVal3 val3); /// /// Interface for mapping a single input value (of an indicated ColumnType) to diff --git a/src/Microsoft.ML.Core/Data/RoleMappedSchema.cs b/src/Microsoft.ML.Core/Data/RoleMappedSchema.cs index 0c167372ae..15ba2c7586 100644 --- a/src/Microsoft.ML.Core/Data/RoleMappedSchema.cs +++ b/src/Microsoft.ML.Core/Data/RoleMappedSchema.cs @@ -469,7 +469,8 @@ public RoleMappedSchema(Schema schema, string label, string feature, /// Note that the schema of of is /// guaranteed to equal the the of . /// - public sealed class RoleMappedData + [BestFriend] + internal sealed class RoleMappedData { /// /// The data. diff --git a/src/Microsoft.ML.Core/EntryPoints/IMlState.cs b/src/Microsoft.ML.Core/EntryPoints/IMlState.cs deleted file mode 100644 index 41ea062861..0000000000 --- a/src/Microsoft.ML.Core/EntryPoints/IMlState.cs +++ /dev/null @@ -1,14 +0,0 @@ -// 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. - -namespace Microsoft.ML.Runtime.EntryPoints -{ - /// - /// Dummy interface to allow reference to the AutoMlState object in the C# API (since AutoMlState - /// has things that reference C# API, leading to circular dependency). Makes state object an opaque - /// black box to the graph. The macro itself will then case to the concrete type. - /// - public interface IMlState - { } -} \ No newline at end of file diff --git a/src/Microsoft.ML.Core/EntryPoints/ModuleArgs.cs b/src/Microsoft.ML.Core/EntryPoints/ModuleArgs.cs index d538f636ce..3ed68ae056 100644 --- a/src/Microsoft.ML.Core/EntryPoints/ModuleArgs.cs +++ b/src/Microsoft.ML.Core/EntryPoints/ModuleArgs.cs @@ -577,11 +577,11 @@ public enum DataKind /// FileHandle, /// - /// A transform model, represented by an . + /// A transform model, represented by an . /// TransformModel, /// - /// A predictor model, represented by an . + /// A predictor model, represented by an . /// PredictorModel, /// @@ -602,11 +602,7 @@ public enum DataKind /// optionally, a set of parameters, unique to each component. Example: "BinaryClassifierEvaluator{threshold=0.5}". /// The C# representation is . /// - Component, - /// - /// An C# object that represents state, such as . - /// - State + Component } public static DataKind GetDataType(Type type) @@ -632,9 +628,9 @@ public static DataKind GetDataType(Type type) return DataKind.Float; if (typeof(IDataView).IsAssignableFrom(type)) return DataKind.DataView; - if (typeof(ITransformModel).IsAssignableFrom(type)) + if (typeof(TransformModel).IsAssignableFrom(type)) return DataKind.TransformModel; - if (typeof(IPredictorModel).IsAssignableFrom(type)) + if (typeof(PredictorModel).IsAssignableFrom(type)) return DataKind.PredictorModel; if (typeof(IFileHandle).IsAssignableFrom(type)) return DataKind.FileHandle; @@ -649,8 +645,6 @@ public static DataKind GetDataType(Type type) } if (typeof(IComponentFactory).IsAssignableFrom(type)) return DataKind.Component; - if (typeof(IMlState).IsAssignableFrom(type)) - return DataKind.State; return DataKind.Unknown; } @@ -673,7 +667,7 @@ public abstract class Optional public abstract object GetValue(); - protected Optional(bool isExplicit) + private protected Optional(bool isExplicit) { IsExplicit = isExplicit; } diff --git a/src/Microsoft.ML.Core/EntryPoints/IPredictorModel.cs b/src/Microsoft.ML.Core/EntryPoints/PredictorModel.cs similarity index 60% rename from src/Microsoft.ML.Core/EntryPoints/IPredictorModel.cs rename to src/Microsoft.ML.Core/EntryPoints/PredictorModel.cs index 0ec1151134..8a9117c7b4 100644 --- a/src/Microsoft.ML.Core/EntryPoints/IPredictorModel.cs +++ b/src/Microsoft.ML.Core/EntryPoints/PredictorModel.cs @@ -9,35 +9,45 @@ namespace Microsoft.ML.Runtime.EntryPoints { /// - /// Interface for standard predictor model port type. + /// Base type for standard predictor model port type. /// - public interface IPredictorModel + public abstract class PredictorModel { + [BestFriend] + private protected PredictorModel() + { + } + /// /// Save the model to the given stream. /// - void Save(IHostEnvironment env, Stream stream); + [BestFriend] + internal abstract void Save(IHostEnvironment env, Stream stream); /// /// Extract only the transform portion of the predictor model. /// - ITransformModel TransformModel { get; } + [BestFriend] + internal abstract TransformModel TransformModel { get; } /// /// Extract the predictor object out of the predictor model. /// - IPredictor Predictor { get; } + [BestFriend] + internal abstract IPredictor Predictor { get; } /// /// Apply the predictor model to the transform model and return the resulting predictor model. /// - IPredictorModel Apply(IHostEnvironment env, ITransformModel transformModel); + [BestFriend] + internal abstract PredictorModel Apply(IHostEnvironment env, TransformModel transformModel); /// /// For a given input data, return role mapped data and the predictor object. /// The scoring entry point will hopefully know how to construct a scorer out of them. /// - void PrepareData(IHostEnvironment env, IDataView input, out RoleMappedData roleMappedData, out IPredictor predictor); + [BestFriend] + internal abstract void PrepareData(IHostEnvironment env, IDataView input, out RoleMappedData roleMappedData, out IPredictor predictor); /// /// Returns a string array containing the label names of the label column type predictor was trained on. @@ -46,13 +56,13 @@ public interface IPredictorModel /// /// /// The column type of the label the predictor was trained on. - string[] GetLabelInfo(IHostEnvironment env, out ColumnType labelType); + [BestFriend] + internal abstract string[] GetLabelInfo(IHostEnvironment env, out ColumnType labelType); /// - /// Returns the RoleMappedSchema that was used in training. + /// Returns the that was used in training. /// - /// - /// - RoleMappedSchema GetTrainingSchema(IHostEnvironment env); + [BestFriend] + internal abstract RoleMappedSchema GetTrainingSchema(IHostEnvironment env); } } \ No newline at end of file diff --git a/src/Microsoft.ML.Core/Data/ITransformModel.cs b/src/Microsoft.ML.Core/EntryPoints/TransformModel.cs similarity index 68% rename from src/Microsoft.ML.Core/Data/ITransformModel.cs rename to src/Microsoft.ML.Core/EntryPoints/TransformModel.cs index 37ea9c1a2d..2e025019ff 100644 --- a/src/Microsoft.ML.Core/Data/ITransformModel.cs +++ b/src/Microsoft.ML.Core/EntryPoints/TransformModel.cs @@ -12,48 +12,59 @@ namespace Microsoft.ML.Runtime.EntryPoints /// /// Interface for standard transform model port type. /// - public interface ITransformModel + public abstract class TransformModel { + [BestFriend] + private protected TransformModel() + { + } + /// /// The input schema that this transform model was originally instantiated on. /// Note that the schema may have columns that aren't needed by this transform model. - /// If an IDataView exists with this schema, then applying this transform model to it + /// If an exists with this schema, then applying this transform model to it /// shouldn't fail because of column type issues. /// // REVIEW: Would be nice to be able to trim this to the minimum needed somehow. Note // however that doing so may cause issues for composing transform models. For example, // if transform model A needs column X and model B needs Y, that is NOT produced by A, // then trimming A's input schema would cause composition to fail. - Schema InputSchema { get; } + [BestFriend] + internal abstract Schema InputSchema { get; } /// /// The output schema that this transform model was originally instantiated on. The schema resulting - /// from may differ from this, similarly to how + /// from may differ from this, similarly to how /// may differ from the schema of dataviews we apply this transform model to. /// - Schema OutputSchema { get; } + [BestFriend] + internal abstract Schema OutputSchema { get; } /// /// Apply the transform(s) in the model to the given input data. /// - IDataView Apply(IHostEnvironment env, IDataView input); + [BestFriend] + internal abstract IDataView Apply(IHostEnvironment env, IDataView input); /// /// Apply the transform(s) in the model to the given transform model. /// - ITransformModel Apply(IHostEnvironment env, ITransformModel input); + [BestFriend] + internal abstract TransformModel Apply(IHostEnvironment env, TransformModel input); /// /// Save the model to the given stream. /// - void Save(IHostEnvironment env, Stream stream); + [BestFriend] + internal abstract void Save(IHostEnvironment env, Stream stream); /// /// Returns the transform model as an that can output a row /// given a row with the same schema as . /// /// The transform model as an . If not all transforms - /// in the pipeline are then it returns null. - IRowToRowMapper AsRowToRowMapper(IExceptionContext ectx); + /// in the pipeline are then it returns . + [BestFriend] + internal abstract IRowToRowMapper AsRowToRowMapper(IExceptionContext ectx); } } diff --git a/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs b/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs index a61e96ce7b..0ed78e89a6 100644 --- a/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs +++ b/src/Microsoft.ML.Core/Properties/AssemblyInfo.cs @@ -9,6 +9,7 @@ [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Tests" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Core.Tests" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Predictor.Tests" + PublicKey.TestValue)] +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Sweeper.Tests" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.InferenceTesting" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.StaticPipelineTesting" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.OnnxTransformTest" + PublicKey.TestValue)] diff --git a/src/Microsoft.ML.Data/Commands/EvaluateCommand.cs b/src/Microsoft.ML.Data/Commands/EvaluateCommand.cs index 09a95ebec2..315b6d7fbe 100644 --- a/src/Microsoft.ML.Data/Commands/EvaluateCommand.cs +++ b/src/Microsoft.ML.Data/Commands/EvaluateCommand.cs @@ -89,7 +89,8 @@ public string GetNameMatch(string input) /// Both take a as input. The is assumed to contain all the column /// roles needed for evaluation, including the score column. /// - public interface IEvaluator + [BestFriend] + internal interface IEvaluator { /// /// Compute the aggregate metrics. Return a dictionary from the metric kind @@ -109,12 +110,14 @@ public interface IEvaluator } /// - /// Signature for creating an IEvaluator. + /// Signature for creating an . /// - public delegate void SignatureEvaluator(); - public delegate void SignatureMamlEvaluator(); + [BestFriend] + internal delegate void SignatureEvaluator(); + [BestFriend] + internal delegate void SignatureMamlEvaluator(); - public static class EvaluateTransform + internal static class EvaluateTransform { public sealed class Arguments { diff --git a/src/Microsoft.ML.Data/Data/Conversion.cs b/src/Microsoft.ML.Data/Data/Conversion.cs index 64adc729c2..cf4379e74d 100644 --- a/src/Microsoft.ML.Data/Data/Conversion.cs +++ b/src/Microsoft.ML.Data/Data/Conversion.cs @@ -32,7 +32,8 @@ namespace Microsoft.ML.Runtime.Data.Conversion using U8 = UInt64; using UG = RowId; - public delegate bool TryParseMapper(in TX src, out T dst); + [BestFriend] + internal delegate bool TryParseMapper(in TX src, out T dst); /// /// This type exists to provide efficient delegates for conversion between standard ColumnTypes, @@ -44,7 +45,8 @@ namespace Microsoft.ML.Runtime.Data.Conversion /// text (and StringBuilder). These are needed by the standard TextSaver, which handles /// differences between sparse and dense inputs in a semantically invariant way. /// - public sealed class Conversions + [BestFriend] + internal sealed class Conversions { // REVIEW: Reconcile implementations with TypeUtils, and clarify the distinction. diff --git a/src/Microsoft.ML.Data/DataView/LambdaColumnMapper.cs b/src/Microsoft.ML.Data/DataView/LambdaColumnMapper.cs index e5b5ae1654..712560771c 100644 --- a/src/Microsoft.ML.Data/DataView/LambdaColumnMapper.cs +++ b/src/Microsoft.ML.Data/DataView/LambdaColumnMapper.cs @@ -13,7 +13,8 @@ namespace Microsoft.ML.Runtime.Data /// This applies the user provided ValueMapper to a column to produce a new column. It automatically /// injects a standard conversion from the actual type of the source column to typeSrc (if needed). /// - public static class LambdaColumnMapper + [BestFriend] + internal static class LambdaColumnMapper { // REVIEW: It would be nice to support propagation of select metadata. public static IDataView Create(IHostEnvironment env, string name, IDataView input, diff --git a/src/Microsoft.ML.Data/EntryPoints/CommonOutputs.cs b/src/Microsoft.ML.Data/EntryPoints/CommonOutputs.cs index 37f37f6c64..c4647c6ae8 100644 --- a/src/Microsoft.ML.Data/EntryPoints/CommonOutputs.cs +++ b/src/Microsoft.ML.Data/EntryPoints/CommonOutputs.cs @@ -24,7 +24,7 @@ public sealed class TransformOutput public IDataView OutputData; [TlcModule.Output(Desc = "Transform model", SortOrder = 2)] - public ITransformModel Model; + public TransformModel Model; } /// @@ -33,7 +33,7 @@ public sealed class TransformOutput public interface ITransformOutput { Var OutputData { get; } - Var Model { get; } + Var Model { get; } } /// @@ -44,7 +44,7 @@ public interface ITransformOutput public abstract class TrainerOutput { [TlcModule.Output(Desc = "The trained model", SortOrder = 1)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } /// @@ -187,7 +187,7 @@ public interface ISequencePredictionOutput /// public interface ITrainerOutput { - Var PredictorModel { get; } + Var PredictorModel { get; } } /// diff --git a/src/Microsoft.ML.Data/EntryPoints/EntryPointNode.cs b/src/Microsoft.ML.Data/EntryPoints/EntryPointNode.cs index 371a58fcae..999b8d0495 100644 --- a/src/Microsoft.ML.Data/EntryPoints/EntryPointNode.cs +++ b/src/Microsoft.ML.Data/EntryPoints/EntryPointNode.cs @@ -77,11 +77,10 @@ public static bool CheckType(Type type) return type == typeof(IDataView) || type == typeof(IFileHandle) || - type == typeof(IPredictorModel) || - type == typeof(ITransformModel) || + type == typeof(PredictorModel) || + type == typeof(TransformModel) || type == typeof(CommonInputs.IEvaluatorInput) || - type == typeof(CommonOutputs.IEvaluatorOutput) || - type == typeof(IMlState); + type == typeof(CommonOutputs.IEvaluatorOutput); } } @@ -186,8 +185,6 @@ public static bool IsValidType(Type variableType) return true; if (variableType == typeof(CommonOutputs.IEvaluatorOutput)) return true; - if (variableType == typeof(IMlState)) - return true; var kind = TlcModule.GetDataType(variableType); if (kind == TlcModule.DataKind.Array) diff --git a/src/Microsoft.ML.Data/EntryPoints/InputBase.cs b/src/Microsoft.ML.Data/EntryPoints/InputBase.cs index 7b76574562..2eae61e079 100644 --- a/src/Microsoft.ML.Data/EntryPoints/InputBase.cs +++ b/src/Microsoft.ML.Data/EntryPoints/InputBase.cs @@ -189,7 +189,7 @@ public static TOut Train(IHost host, TArg input, } var predictor = TrainUtils.Train(host, ch, cachedRoleMappedData, trainer, calibrator, maxCalibrationExamples); - return new TOut() { PredictorModel = new PredictorModel(host, roleMappedData, input.TrainingData, predictor) }; + return new TOut() { PredictorModel = new PredictorModelImpl(host, roleMappedData, input.TrainingData, predictor) }; } } } @@ -212,7 +212,7 @@ public interface ITransformInput /// public interface IFeaturizerInput : ITransformInput { - Var PredictorModel { get; set; } + Var PredictorModel { get; set; } } /// @@ -261,7 +261,7 @@ public interface ITrainerInputWithGroupId : ITrainerInputWithWeight /// public interface ICalibratorInput : ITransformInput { - Var UncalibratedPredictorModel { get; } + Var UncalibratedPredictorModel { get; } int MaxRows { get; } } diff --git a/src/Microsoft.ML.Data/EntryPoints/PredictorModel.cs b/src/Microsoft.ML.Data/EntryPoints/PredictorModelImpl.cs similarity index 65% rename from src/Microsoft.ML.Data/EntryPoints/PredictorModel.cs rename to src/Microsoft.ML.Data/EntryPoints/PredictorModelImpl.cs index f450c5e39a..b29e1cc326 100644 --- a/src/Microsoft.ML.Data/EntryPoints/PredictorModel.cs +++ b/src/Microsoft.ML.Data/EntryPoints/PredictorModelImpl.cs @@ -14,58 +14,60 @@ namespace Microsoft.ML.Runtime.EntryPoints { /// - /// This class encapsulates the predictor and a preceding transform model. + /// This class encapsulates the predictor and a preceding transform model, as the concrete and hidden + /// implementation of . /// - public sealed class PredictorModel : IPredictorModel + [BestFriend] + internal sealed class PredictorModelImpl : PredictorModel { - private readonly IPredictor _predictor; - private readonly ITransformModel _transformModel; private readonly KeyValuePair[] _roleMappings; - public ITransformModel TransformModel { get { return _transformModel; } } + internal override TransformModel TransformModel { get; } - public IPredictor Predictor { get { return _predictor; } } + internal override IPredictor Predictor { get; } - public PredictorModel(IHostEnvironment env, RoleMappedData trainingData, IDataView startingData, IPredictor predictor) + [BestFriend] + internal PredictorModelImpl(IHostEnvironment env, RoleMappedData trainingData, IDataView startingData, IPredictor predictor) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(trainingData, nameof(trainingData)); env.CheckValue(predictor, nameof(predictor)); - _transformModel = new TransformModel(env, trainingData.Data, startingData); + TransformModel = new TransformModelImpl(env, trainingData.Data, startingData); _roleMappings = trainingData.Schema.GetColumnRoleNames().ToArray(); - _predictor = predictor; + Predictor = predictor; } - public PredictorModel(IHostEnvironment env, Stream stream) + [BestFriend] + internal PredictorModelImpl(IHostEnvironment env, Stream stream) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(stream, nameof(stream)); using (var ch = env.Start("Loading predictor model")) { // REVIEW: address the asymmetry in the way we're loading and saving the model. - _transformModel = new TransformModel(env, stream); + TransformModel = new TransformModelImpl(env, stream); var roles = ModelFileUtils.LoadRoleMappingsOrNull(env, stream); env.CheckDecode(roles != null, "Predictor model must contain role mappings"); _roleMappings = roles.ToArray(); - _predictor = ModelFileUtils.LoadPredictorOrNull(env, stream); - env.CheckDecode(_predictor != null, "Predictor model must contain a predictor"); + Predictor = ModelFileUtils.LoadPredictorOrNull(env, stream); + env.CheckDecode(Predictor != null, "Predictor model must contain a predictor"); } } - private PredictorModel(ITransformModel transformModel, IPredictor predictor, KeyValuePair[] roleMappings) + private PredictorModelImpl(TransformModel transformModel, IPredictor predictor, KeyValuePair[] roleMappings) { Contracts.AssertValue(transformModel); Contracts.AssertValue(predictor); Contracts.AssertValue(roleMappings); - _transformModel = transformModel; - _predictor = predictor; + TransformModel = transformModel; + Predictor = predictor; _roleMappings = roleMappings; } - public void Save(IHostEnvironment env, Stream stream) + internal override void Save(IHostEnvironment env, Stream stream) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(stream, nameof(stream)); @@ -77,37 +79,37 @@ public void Save(IHostEnvironment env, Stream stream) // (we use the TrainUtils.SaveModel that does all three). // Create the chain of transforms for saving. - IDataView data = new EmptyDataView(env, _transformModel.InputSchema); - data = _transformModel.Apply(env, data); + IDataView data = new EmptyDataView(env, TransformModel.InputSchema); + data = TransformModel.Apply(env, data); var roleMappedData = new RoleMappedData(data, _roleMappings, opt: true); - TrainUtils.SaveModel(env, ch, stream, _predictor, roleMappedData); + TrainUtils.SaveModel(env, ch, stream, Predictor, roleMappedData); } } - public IPredictorModel Apply(IHostEnvironment env, ITransformModel transformModel) + internal override PredictorModel Apply(IHostEnvironment env, TransformModel transformModel) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(transformModel, nameof(transformModel)); - ITransformModel newTransformModel = _transformModel.Apply(env, transformModel); + TransformModel newTransformModel = TransformModel.Apply(env, transformModel); Contracts.AssertValue(newTransformModel); - return new PredictorModel(newTransformModel, _predictor, _roleMappings); + return new PredictorModelImpl(newTransformModel, Predictor, _roleMappings); } - public void PrepareData(IHostEnvironment env, IDataView input, out RoleMappedData roleMappedData, out IPredictor predictor) + internal override void PrepareData(IHostEnvironment env, IDataView input, out RoleMappedData roleMappedData, out IPredictor predictor) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(input, nameof(input)); - input = _transformModel.Apply(env, input); + input = TransformModel.Apply(env, input); roleMappedData = new RoleMappedData(input, _roleMappings, opt: true); - predictor = _predictor; + predictor = Predictor; } - public string[] GetLabelInfo(IHostEnvironment env, out ColumnType labelType) + internal override string[] GetLabelInfo(IHostEnvironment env, out ColumnType labelType) { Contracts.CheckValue(env, nameof(env)); - var predictor = _predictor; + var predictor = Predictor; var calibrated = predictor as CalibratedPredictorBase; while (calibrated != null) { @@ -135,10 +137,10 @@ public string[] GetLabelInfo(IHostEnvironment env, out ColumnType labelType) return null; } - public RoleMappedSchema GetTrainingSchema(IHostEnvironment env) + internal override RoleMappedSchema GetTrainingSchema(IHostEnvironment env) { Contracts.CheckValue(env, nameof(env)); - var predInput = _transformModel.Apply(env, new EmptyDataView(env, _transformModel.InputSchema)); + var predInput = TransformModel.Apply(env, new EmptyDataView(env, TransformModel.InputSchema)); var trainRms = new RoleMappedSchema(predInput.Schema, _roleMappings, opt: true); return trainRms; } diff --git a/src/Microsoft.ML.Data/EntryPoints/SchemaManipulation.cs b/src/Microsoft.ML.Data/EntryPoints/SchemaManipulation.cs index cccc1da6e7..40302bdc9d 100644 --- a/src/Microsoft.ML.Data/EntryPoints/SchemaManipulation.cs +++ b/src/Microsoft.ML.Data/EntryPoints/SchemaManipulation.cs @@ -22,7 +22,7 @@ public static CommonOutputs.TransformOutput ConcatColumns(IHostEnvironment env, EntryPointUtils.CheckInputArgs(host, input); var xf = ColumnConcatenatingTransformer.Create(env, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.ColumnSelector", Desc = "Selects a set of columns, dropping all others", UserName = "Select Columns")] @@ -34,7 +34,7 @@ public static CommonOutputs.TransformOutput SelectColumns(IHostEnvironment env, EntryPointUtils.CheckInputArgs(host, input); var xf = new ColumnSelectingTransformer(env, input.KeepColumns, input.DropColumns, input.KeepHidden, input.IgnoreMissing).Transform(input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.ColumnCopier", Desc = "Duplicates columns from the dataset", UserName = ColumnCopyingTransformer.UserName, ShortName = ColumnCopyingTransformer.ShortName)] @@ -45,7 +45,7 @@ public static CommonOutputs.TransformOutput CopyColumns(IHostEnvironment env, Co host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); var xf = ColumnCopyingTransformer.Create(env, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } diff --git a/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs b/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs index f68fcff00a..f067ca27ac 100644 --- a/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs +++ b/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs @@ -38,7 +38,7 @@ public static CommonOutputs.TransformOutput SelectColumns(IHostEnvironment env, indices.Add(i); } var newView = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Index = indices.ToArray() }, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, newView, input.Data), OutputData = newView }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, newView, input.Data), OutputData = newView }; } private static bool ShouldAddColumn(Schema schema, int i, string[] extraColumns, uint scoreSet) @@ -58,7 +58,7 @@ private static bool ShouldAddColumn(Schema schema, int i, string[] extraColumns, public sealed class RenameBinaryPredictionScoreColumnsInput : TransformInputBase { [Argument(ArgumentType.Required, HelpText = "The predictor model used in scoring", SortOrder = 2)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } [TlcModule.EntryPoint(Name = "Transforms.BinaryPredictionScoreColumnsRenamer", Desc = "For binary prediction, it renames the PredictedLabel and Score columns to include the name of the positive class.", UserName = "Rename Binary Prediction Score Columns")] @@ -103,12 +103,12 @@ public static CommonOutputs.TransformOutput RenameBinaryPredictionScoreColumns(I var copyColumn = new ColumnCopyingTransformer(env, copyCols.ToArray()).Transform(input.Data); var dropColumn = ColumnSelectingTransformer.CreateDrop(env, copyColumn, copyCols.Select(c => c.Source).ToArray()); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, dropColumn, input.Data), OutputData = dropColumn }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, dropColumn, input.Data), OutputData = dropColumn }; } } var newView = NopTransform.CreateIfNeeded(env, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, newView, input.Data), OutputData = newView }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, newView, input.Data), OutputData = newView }; } } } diff --git a/src/Microsoft.ML.Data/EntryPoints/ScoreModel.cs b/src/Microsoft.ML.Data/EntryPoints/ScoreModel.cs index b5c49c7fdb..1792303468 100644 --- a/src/Microsoft.ML.Data/EntryPoints/ScoreModel.cs +++ b/src/Microsoft.ML.Data/EntryPoints/ScoreModel.cs @@ -13,8 +13,8 @@ namespace Microsoft.ML.Runtime.EntryPoints { /// - /// This module handles scoring a against a new dataset. - /// As a result, we return both the scored data and the scoring transform as a . + /// This module handles scoring a against a new dataset. + /// As a result, we return both the scored data and the scoring transform as a . /// /// REVIEW: This module does not support 'exotic' scoring scenarios, like recommendation and quantile regression /// (those where the user-defined scorer settings are necessary to identify the scorer). We could resolve this by @@ -28,7 +28,7 @@ public sealed class Input public IDataView Data; [Argument(ArgumentType.Required, HelpText = "The predictor model to apply to data", SortOrder = 2)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; [Argument(ArgumentType.AtMostOnce, HelpText = "Suffix to append to the score columns", SortOrder = 3)] public string Suffix; @@ -40,7 +40,7 @@ public sealed class InputTransformScorer public IDataView Data; [Argument(ArgumentType.Required, HelpText = "The transform model to apply to data", SortOrder = 2)] - public ITransformModel TransformModel; + public TransformModel TransformModel; } public sealed class Output @@ -49,19 +49,19 @@ public sealed class Output public IDataView ScoredData; [TlcModule.Output(Desc = "The scoring transform", SortOrder = 2)] - public ITransformModel ScoringTransform; + public TransformModel ScoringTransform; } public sealed class ModelInput { [Argument(ArgumentType.Required, HelpText = "The predictor model to turn into a transform", SortOrder = 1)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } public sealed class ModelOutput { [TlcModule.Output(Desc = "The scoring transform", SortOrder = 1)] - public ITransformModel ScoringTransform; + public TransformModel ScoringTransform; } [TlcModule.EntryPoint(Name = "Transforms.DatasetScorer", Desc = "Score a dataset with a predictor model")] @@ -91,7 +91,7 @@ public static Output Score(IHostEnvironment env, Input input) new Output { ScoredData = scoredPipe, - ScoringTransform = new TransformModel(host, scoredPipe, inputData) + ScoringTransform = new TransformModelImpl(host, scoredPipe, inputData) }; } @@ -140,7 +140,7 @@ public static Output MakeScoringTransform(IHostEnvironment env, ModelInput input return new Output { ScoredData = scoredPipe, - ScoringTransform = new TransformModel(host, scoredPipe, emptyData) + ScoringTransform = new TransformModelImpl(host, scoredPipe, emptyData) }; } } diff --git a/src/Microsoft.ML.Data/EntryPoints/SelectRows.cs b/src/Microsoft.ML.Data/EntryPoints/SelectRows.cs index aa805eeac8..eaabf248dc 100644 --- a/src/Microsoft.ML.Data/EntryPoints/SelectRows.cs +++ b/src/Microsoft.ML.Data/EntryPoints/SelectRows.cs @@ -20,7 +20,7 @@ public static CommonOutputs.TransformOutput FilterByRange(IHostEnvironment env, EntryPointUtils.CheckInputArgs(host, input); var xf = new RangeFilter(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.RowSkipFilter", Desc = SkipTakeFilter.SkipFilterSummary, UserName = SkipTakeFilter.SkipFilterUserName, @@ -32,7 +32,7 @@ public static CommonOutputs.TransformOutput SkipFilter(IHostEnvironment env, Ski host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); var xf = SkipTakeFilter.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.RowTakeFilter", Desc = SkipTakeFilter.TakeFilterSummary, UserName = SkipTakeFilter.TakeFilterUserName, @@ -44,7 +44,7 @@ public static CommonOutputs.TransformOutput TakeFilter(IHostEnvironment env, Ski host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); var xf = SkipTakeFilter.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.RowSkipAndTakeFilter", Desc = SkipTakeFilter.SkipTakeFilterSummary, @@ -56,7 +56,7 @@ public static CommonOutputs.TransformOutput SkipAndTakeFilter(IHostEnvironment e host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); var xf = SkipTakeFilter.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } diff --git a/src/Microsoft.ML.Data/EntryPoints/SummarizePredictor.cs b/src/Microsoft.ML.Data/EntryPoints/SummarizePredictor.cs index 0603d28e84..49e5acdca5 100644 --- a/src/Microsoft.ML.Data/EntryPoints/SummarizePredictor.cs +++ b/src/Microsoft.ML.Data/EntryPoints/SummarizePredictor.cs @@ -19,7 +19,7 @@ public static class SummarizePredictor public abstract class InputBase { [Argument(ArgumentType.Required, ShortName = "predictorModel", HelpText = "The predictor to summarize")] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } public sealed class Input : InputBase diff --git a/src/Microsoft.ML.Data/EntryPoints/TransformModel.cs b/src/Microsoft.ML.Data/EntryPoints/TransformModelImpl.cs similarity index 84% rename from src/Microsoft.ML.Data/EntryPoints/TransformModel.cs rename to src/Microsoft.ML.Data/EntryPoints/TransformModelImpl.cs index 4e3c2e81f1..7ef6ccddcb 100644 --- a/src/Microsoft.ML.Data/EntryPoints/TransformModel.cs +++ b/src/Microsoft.ML.Data/EntryPoints/TransformModelImpl.cs @@ -7,6 +7,7 @@ using System.IO; using Microsoft.ML.Data; using Microsoft.ML.Runtime.Data; +using Microsoft.ML.Runtime.Data.IO; using Microsoft.ML.Runtime.Internal.Utilities; using Microsoft.ML.Runtime.Model; @@ -17,42 +18,45 @@ namespace Microsoft.ML.Runtime.EntryPoints /// the initial schema, together with the sequence of transforms applied to that /// schema. /// - public sealed class TransformModel : ITransformModel + [BestFriend] + internal sealed class TransformModelImpl : TransformModel { // The cached schema of the root of the _chain. private readonly Schema _schemaRoot; - // This contains the transforms to save instantiated on an IDataView with - // appropriate initial schema. Note that the "root" of this is typically either - // an empty IDataView or a BinaryLoader with no rows. However, other root - // types are possible, since we don't insist on this when loading a model - // from a zip file. However, whenever we save, we force a BinaryLoader to - // be serialized for the root. + /// + /// This contains the transforms to save instantiated on an with + /// appropriate initial schema. Note that the "root" of this is typically either + /// an empty or a with no rows. However, other root + /// types are possible, since we don't insist on this when loading a model + /// from a zip file. However, whenever we save, we force a to + /// be serialized for the root. + /// private readonly IDataView _chain; /// /// The input schema that this transform model was originally instantiated on. /// Note that the schema may have columns that aren't needed by this transform model. - /// If an IDataView exists with this schema, then applying this transform model to it + /// If an exists with this schema, then applying this transform model to it /// shouldn't fail because of column type issues. /// REVIEW: Would be nice to be able to trim this to the minimum needed somehow. Note /// however that doing so may cause issues for composing transform models. For example, /// if transform model A needs column X and model B needs Y, that is NOT produced by A, /// then trimming A's input schema would cause composition to fail. /// - public Schema InputSchema => _schemaRoot; + internal override Schema InputSchema => _schemaRoot; /// /// The resulting schema once applied to this model. The might have /// columns that are not needed by this transform and these columns will be seen in the /// produced by this transform. /// - public Schema OutputSchema => _chain.Schema; + internal override Schema OutputSchema => _chain.Schema; /// /// Create a TransformModel containing the transforms from "result" back to "input". /// - public TransformModel(IHostEnvironment env, IDataView result, IDataView input) + public TransformModelImpl(IHostEnvironment env, IDataView result, IDataView input) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(result, nameof(result)); @@ -63,7 +67,7 @@ public TransformModel(IHostEnvironment env, IDataView result, IDataView input) _chain = ApplyTransformUtils.ApplyAllTransformsToData(env, result, root, input); } - private TransformModel(IHostEnvironment env, Schema schemaRoot, IDataView chain) + private TransformModelImpl(IHostEnvironment env, Schema schemaRoot, IDataView chain) { Contracts.AssertValue(env); env.AssertValue(schemaRoot); @@ -76,7 +80,7 @@ private TransformModel(IHostEnvironment env, Schema schemaRoot, IDataView chain) /// Create a TransformModel containing the given (optional) transforms applied to the /// given root schema. /// - public TransformModel(IHostEnvironment env, Schema schemaRoot, IDataTransform[] xfs) + public TransformModelImpl(IHostEnvironment env, Schema schemaRoot, IDataTransform[] xfs) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(schemaRoot, nameof(schemaRoot)); @@ -100,7 +104,7 @@ public TransformModel(IHostEnvironment env, Schema schemaRoot, IDataTransform[] /// /// Load a transform model. /// - public TransformModel(IHostEnvironment env, Stream stream) + public TransformModelImpl(IHostEnvironment env, Stream stream) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(stream, nameof(stream)); @@ -128,7 +132,7 @@ public TransformModel(IHostEnvironment env, Stream stream) /// /// Apply this transform model to the given input data. /// - public IDataView Apply(IHostEnvironment env, IDataView input) + internal override IDataView Apply(IHostEnvironment env, IDataView input) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(input, nameof(input)); @@ -138,14 +142,14 @@ public IDataView Apply(IHostEnvironment env, IDataView input) /// /// Apply this transform model to the given input transform model to produce a composite transform model. /// - public ITransformModel Apply(IHostEnvironment env, ITransformModel input) + internal override TransformModel Apply(IHostEnvironment env, TransformModel input) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(input, nameof(input)); IDataView view; Schema schemaRoot = input.InputSchema; - var mod = input as TransformModel; + var mod = input as TransformModelImpl; if (mod != null) view = ApplyTransformUtils.ApplyAllTransformsToData(env, _chain, mod._chain); else @@ -155,13 +159,13 @@ public ITransformModel Apply(IHostEnvironment env, ITransformModel input) view = Apply(env, view); } - return new TransformModel(env, schemaRoot, view); + return new TransformModelImpl(env, schemaRoot, view); } /// /// Save this transform model. /// - public void Save(IHostEnvironment env, Stream stream) + internal override void Save(IHostEnvironment env, Stream stream) { Contracts.CheckValue(env, nameof(env)); env.CheckValue(stream, nameof(stream)); @@ -177,7 +181,7 @@ public void Save(IHostEnvironment env, Stream stream) } } - public IRowToRowMapper AsRowToRowMapper(IExceptionContext ectx) + internal override IRowToRowMapper AsRowToRowMapper(IExceptionContext ectx) { return CompositeRowToRowMapper.IsCompositeRowToRowMapper(_chain) diff --git a/src/Microsoft.ML.Data/Evaluators/AnomalyDetectionEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/AnomalyDetectionEvaluator.cs index 361f580c71..b8207573a6 100644 --- a/src/Microsoft.ML.Data/Evaluators/AnomalyDetectionEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/AnomalyDetectionEvaluator.cs @@ -107,7 +107,7 @@ protected override Aggregator GetAggregatorCore(RoleMappedSchema schema, string return new Aggregator(Host, _aucCount, _numTopResults, _k, _p, _streaming, schema.Name == null ? -1 : schema.Name.Index, stratName); } - public override IDataTransform GetPerInstanceMetrics(RoleMappedData data) + internal override IDataTransform GetPerInstanceMetricsCore(RoleMappedData data) { return NopTransform.CreateIfNeeded(Host, data.Data); } @@ -605,7 +605,7 @@ public sealed class Arguments : ArgumentsBase private readonly int _k; private readonly Double _p; - protected override IEvaluator Evaluator => _evaluator; + private protected override IEvaluator Evaluator => _evaluator; public AnomalyDetectionMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.AnomalyDetection, "AnomalyDetectionMamlEvaluator") @@ -777,7 +777,7 @@ public static CommonOutputs.CommonEvaluateOutput AnomalyDetection(IHostEnvironme string weight; string name; MatchColumns(host, input, out label, out weight, out name); - var evaluator = new AnomalyDetectionMamlEvaluator(host, input); + IMamlEvaluator evaluator = new AnomalyDetectionMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/BinaryClassifierEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/BinaryClassifierEvaluator.cs index 2b8ffe7d0b..4031441e21 100644 --- a/src/Microsoft.ML.Data/Evaluators/BinaryClassifierEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/BinaryClassifierEvaluator.cs @@ -813,7 +813,7 @@ public CalibratedBinaryClassificationMetrics Evaluate(IDataView data, string lab RoleMappedSchema.CreatePair(MetadataUtils.Const.ScoreValueKind.Probability, probability), RoleMappedSchema.CreatePair(MetadataUtils.Const.ScoreValueKind.PredictedLabel, predictedLabel)); - var resultDict = Evaluate(roles); + var resultDict = ((IEvaluator)this).Evaluate(roles); Host.Assert(resultDict.ContainsKey(MetricKinds.OverallMetrics)); var overall = resultDict[MetricKinds.OverallMetrics]; @@ -850,7 +850,7 @@ public BinaryClassificationMetrics Evaluate(IDataView data, string label, string RoleMappedSchema.CreatePair(MetadataUtils.Const.ScoreValueKind.Score, score), RoleMappedSchema.CreatePair(MetadataUtils.Const.ScoreValueKind.PredictedLabel, predictedLabel)); - var resultDict = Evaluate(roles); + var resultDict = ((IEvaluator)this).Evaluate(roles); Host.Assert(resultDict.ContainsKey(MetricKinds.OverallMetrics)); var overall = resultDict[MetricKinds.OverallMetrics]; @@ -1152,7 +1152,7 @@ public class Arguments : ArgumentsBase private readonly string _prFileName; private readonly string _probCol; - protected override IEvaluator Evaluator { get { return _evaluator; } } + private protected override IEvaluator Evaluator => _evaluator; public BinaryClassifierMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.BinaryClassification, "BinaryClassifierMamlEvaluator") @@ -1521,7 +1521,7 @@ public static CommonOutputs.ClassificationEvaluateOutput Binary(IHostEnvironment string weight; string name; MatchColumns(host, input, out label, out weight, out name); - var evaluator = new BinaryClassifierMamlEvaluator(host, input); + IMamlEvaluator evaluator = new BinaryClassifierMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/ClusteringEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/ClusteringEvaluator.cs index e74f470f0c..61ba97bb6e 100644 --- a/src/Microsoft.ML.Data/Evaluators/ClusteringEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/ClusteringEvaluator.cs @@ -78,7 +78,7 @@ public ClusteringMetrics Evaluate(IDataView data, string score, string label = n var rolesMappedData = new RoleMappedData(data, opt: false, roles.ToArray()); - var resultDict = Evaluate(rolesMappedData); + var resultDict = ((IEvaluator)this).Evaluate(rolesMappedData); Host.Assert(resultDict.ContainsKey(MetricKinds.OverallMetrics)); var overall = resultDict[MetricKinds.OverallMetrics]; @@ -777,7 +777,7 @@ public class Arguments : ArgumentsBase private readonly string _featureCol; private readonly bool _calculateDbi; - protected override IEvaluator Evaluator { get { return _evaluator; } } + private protected override IEvaluator Evaluator => _evaluator; public ClusteringMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.Clustering, "ClusteringMamlEvaluator") @@ -865,7 +865,7 @@ public static CommonOutputs.CommonEvaluateOutput Clustering(IHostEnvironment env string features = TrainUtils.MatchNameOrDefaultOrNull(host, schema, nameof(ClusteringMamlEvaluator.Arguments.FeatureColumn), input.FeatureColumn, DefaultColumnNames.Features); - var evaluator = new ClusteringMamlEvaluator(host, input); + IMamlEvaluator evaluator = new ClusteringMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, features, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs b/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs index 59f5cafeb0..ab1330c31b 100644 --- a/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs +++ b/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs @@ -14,7 +14,7 @@ namespace Microsoft.ML.Runtime.Data { /// /// This is a base class for TLC evaluators. It implements both of the methods: and - /// . Note that the input is assumed to contain all the column + /// . Note that the input is assumed to contain all the column /// roles needed for evaluation, including the score column. /// public abstract partial class EvaluatorBase : IEvaluator @@ -28,7 +28,7 @@ protected EvaluatorBase(IHostEnvironment env, string registrationName) Host = env.Register(registrationName); } - public Dictionary Evaluate(RoleMappedData data) + Dictionary IEvaluator.Evaluate(RoleMappedData data) { CheckColumnTypes(data.Schema); Func activeCols = GetActiveCols(data.Schema); @@ -209,7 +209,10 @@ protected ValueGetter>> GetKeyValueGetter(Aggregato }; } - public abstract IDataTransform GetPerInstanceMetrics(RoleMappedData data); + IDataTransform IEvaluator.GetPerInstanceMetrics(RoleMappedData data) => GetPerInstanceMetricsCore(data); + + [BestFriend] + internal abstract IDataTransform GetPerInstanceMetricsCore(RoleMappedData data); public abstract IEnumerable GetOverallMetricColumns(); @@ -440,7 +443,7 @@ protected RowToRowEvaluatorBase(IHostEnvironment env, string registrationName) { } - public override IDataTransform GetPerInstanceMetrics(RoleMappedData data) + internal override IDataTransform GetPerInstanceMetricsCore(RoleMappedData data) { var mapper = CreatePerInstanceRowMapper(data.Schema); return new RowToRowMapperTransform(Host, data.Data, mapper, null); diff --git a/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs b/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs index 22703accc6..95b8e99055 100644 --- a/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs +++ b/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs @@ -17,7 +17,8 @@ namespace Microsoft.ML.Runtime.Data { - public static class EvaluateUtils + [BestFriend] + internal static class EvaluateUtils { public struct AggregatedMetric { diff --git a/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs index 110abd27e4..8b8bd0a761 100644 --- a/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs @@ -17,7 +17,8 @@ namespace Microsoft.ML.Runtime.Data /// should be assumed to contain only the following column roles: label, group, weight and name. Any other columns needed for /// evaluation should be searched for by name in the . /// - public interface IMamlEvaluator : IEvaluator + [BestFriend] + internal interface IMamlEvaluator : IEvaluator { /// /// Print the aggregate metrics to the console. @@ -45,7 +46,7 @@ public interface IMamlEvaluator : IEvaluator } /// - /// A base class implementation of . The and + /// A base class implementation of . The and /// methods create a new containing all the columns needed for evaluation, and call the corresponding /// methods on an of the appropriate type. /// @@ -81,7 +82,8 @@ public abstract class ArgumentsBase : EvaluateInputBase protected readonly string WeightCol; protected readonly string[] StratCols; - protected abstract IEvaluator Evaluator { get; } + [BestFriend] + private protected abstract IEvaluator Evaluator { get; } protected MamlEvaluatorBase(ArgumentsBase args, IHostEnvironment env, string scoreColumnKind, string registrationName) { @@ -94,7 +96,7 @@ protected MamlEvaluatorBase(ArgumentsBase args, IHostEnvironment env, string sco StratCols = args.StratColumn; } - public Dictionary Evaluate(RoleMappedData data) + Dictionary IEvaluator.Evaluate(RoleMappedData data) { data = new RoleMappedData(data.Data, GetInputColumnRoles(data.Schema, needStrat: true)); return Evaluator.Evaluate(data); @@ -140,7 +142,7 @@ public virtual IEnumerable GetOverallMetricColumns() return Evaluator.GetOverallMetricColumns(); } - public void PrintFoldResults(IChannel ch, Dictionary metrics) + void IMamlEvaluator.PrintFoldResults(IChannel ch, Dictionary metrics) { Host.CheckValue(ch, nameof(ch)); Host.CheckValue(metrics, nameof(metrics)); @@ -167,7 +169,7 @@ protected virtual void PrintFoldResultsCore(IChannel ch, Dictionary[] metrics) + void IMamlEvaluator.PrintAdditionalMetrics(IChannel ch, params Dictionary[] metrics) { Host.CheckValue(ch, nameof(ch)); Host.CheckNonEmpty(metrics, nameof(metrics)); @@ -199,7 +201,7 @@ protected virtual void PrintAdditionalMetricsCore(IChannel ch, Dictionary _evaluator; public MultiClassMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.MultiClassClassification, "MultiClassMamlEvaluator") @@ -1039,7 +1039,7 @@ public static CommonOutputs.ClassificationEvaluateOutput MultiClass(IHostEnviron EntryPointUtils.CheckInputArgs(host, input); MatchColumns(host, input, out string label, out string weight, out string name); - var evaluator = new MultiClassMamlEvaluator(host, input); + IMamlEvaluator evaluator = new MultiClassMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/MultiOutputRegressionEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/MultiOutputRegressionEvaluator.cs index f33fcaee1a..d67225874a 100644 --- a/src/Microsoft.ML.Data/Evaluators/MultiOutputRegressionEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/MultiOutputRegressionEvaluator.cs @@ -623,7 +623,7 @@ public sealed class Arguments : ArgumentsBase private readonly MultiOutputRegressionEvaluator _evaluator; private readonly bool _supressScoresAndLabels; - protected override IEvaluator Evaluator { get { return _evaluator; } } + private protected override IEvaluator Evaluator => _evaluator; public MultiOutputRegressionMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.MultiOutputRegression, "RegressionMamlEvaluator") @@ -781,7 +781,7 @@ public static CommonOutputs.CommonEvaluateOutput MultiOutputRegression(IHostEnvi string weight; string name; MatchColumns(host, input, out label, out weight, out name); - var evaluator = new MultiOutputRegressionMamlEvaluator(host, input); + IMamlEvaluator evaluator = new MultiOutputRegressionMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs index 10f5aa6e4b..0e7d30bc79 100644 --- a/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs @@ -474,7 +474,7 @@ public sealed class Arguments : ArgumentsBase private readonly int? _index; private readonly QuantileRegressionEvaluator _evaluator; - protected override IEvaluator Evaluator => _evaluator; + private protected override IEvaluator Evaluator => _evaluator; public QuantileRegressionMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.QuantileRegression, "QuantilsRegressionMamlEvaluator") @@ -569,7 +569,7 @@ public static CommonOutputs.CommonEvaluateOutput QuantileRegression(IHostEnviron string weight; string name; MatchColumns(host, input, out label, out weight, out name); - var evaluator = new QuantileRegressionMamlEvaluator(host, input); + IMamlEvaluator evaluator = new QuantileRegressionMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/RankerEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/RankerEvaluator.cs index 04298a877f..5523057462 100644 --- a/src/Microsoft.ML.Data/Evaluators/RankerEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/RankerEvaluator.cs @@ -123,7 +123,7 @@ protected override Aggregator GetAggregatorCore(RoleMappedSchema schema, string return new Aggregator(Host, _labelGains, _truncationLevel, _groupSummary, schema.Weight != null, stratName); } - public override IDataTransform GetPerInstanceMetrics(RoleMappedData data) + internal override IDataTransform GetPerInstanceMetricsCore(RoleMappedData data) { Host.CheckValue(data, nameof(data)); Host.CheckParam(data.Schema.Label != null, nameof(data), "Schema must contain a label column"); @@ -253,7 +253,7 @@ public RankerMetrics Evaluate(IDataView data, string label, string groupId, stri RoleMappedSchema.ColumnRole.Group.Bind(groupId), RoleMappedSchema.CreatePair(MetadataUtils.Const.ScoreValueKind.Score, score)); - var resultDict = Evaluate(roles); + var resultDict = ((IEvaluator)this).Evaluate(roles); Host.Assert(resultDict.ContainsKey(MetricKinds.OverallMetrics)); var overall = resultDict[MetricKinds.OverallMetrics]; @@ -864,7 +864,7 @@ public sealed class Arguments : ArgumentsBase private readonly string _groupSummaryFilename; - protected override IEvaluator Evaluator { get { return _evaluator; } } + private protected override IEvaluator Evaluator => _evaluator; public RankerMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.Ranking, "RankerMamlEvaluator") @@ -1072,7 +1072,7 @@ public static CommonOutputs.CommonEvaluateOutput Ranking(IHostEnvironment env, R string groupId = TrainUtils.MatchNameOrDefaultOrNull(host, schema, nameof(RankerMamlEvaluator.Arguments.GroupIdColumn), input.GroupIdColumn, DefaultColumnNames.GroupId); - var evaluator = new RankerMamlEvaluator(host, input); + IMamlEvaluator evaluator = new RankerMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, groupId, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Evaluators/RegressionEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/RegressionEvaluator.cs index bd2c86ff7d..4533de0d8e 100644 --- a/src/Microsoft.ML.Data/Evaluators/RegressionEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/RegressionEvaluator.cs @@ -173,7 +173,7 @@ public RegressionMetrics Evaluate(IDataView data, string label, string score) RoleMappedSchema.ColumnRole.Label.Bind(label), RoleMappedSchema.CreatePair(MetadataUtils.Const.ScoreValueKind.Score, score)); - var resultDict = Evaluate(roles); + var resultDict = ((IEvaluator)this).Evaluate(roles); Host.Assert(resultDict.ContainsKey(MetricKinds.OverallMetrics)); var overall = resultDict[MetricKinds.OverallMetrics]; @@ -338,7 +338,7 @@ public sealed class Arguments : ArgumentsBase private readonly RegressionEvaluator _evaluator; - protected override IEvaluator Evaluator { get { return _evaluator; } } + private protected override IEvaluator Evaluator => _evaluator; public RegressionMamlEvaluator(IHostEnvironment env, Arguments args) : base(args, env, MetadataUtils.Const.ScoreColumnKind.Regression, "RegressionMamlEvaluator") @@ -386,7 +386,7 @@ public static CommonOutputs.CommonEvaluateOutput Regression(IHostEnvironment env string weight; string name; MatchColumns(host, input, out label, out weight, out name); - var evaluator = new RegressionMamlEvaluator(host, input); + IMamlEvaluator evaluator = new RegressionMamlEvaluator(host, input); var data = new RoleMappedData(input.Data, label, null, null, weight, name); var metrics = evaluator.Evaluate(data); diff --git a/src/Microsoft.ML.Data/Prediction/Calibrator.cs b/src/Microsoft.ML.Data/Prediction/Calibrator.cs index b068a73243..ecc0c5501f 100644 --- a/src/Microsoft.ML.Data/Prediction/Calibrator.cs +++ b/src/Microsoft.ML.Data/Prediction/Calibrator.cs @@ -1837,7 +1837,7 @@ public static class Calibrate public abstract class CalibrateInputBase : TransformInputBase { [Argument(ArgumentType.Required, ShortName = "uncalibratedPredictorModel", HelpText = "The predictor to calibrate", SortOrder = 2)] - public IPredictorModel UncalibratedPredictorModel; + public PredictorModel UncalibratedPredictorModel; [Argument(ArgumentType.Required, ShortName = "maxRows", HelpText = "The maximum number of examples to train the calibrator on", SortOrder = 3)] [TlcModule.Range(Inf = 0, Max = int.MaxValue)] @@ -1910,7 +1910,7 @@ public static CommonOutputs.CalibratorOutput FixedPlatt(IHostEnvironment env, Fi /// The input object, containing the predictor, the data and an integer indicating the maximum number /// of examples to use for training the calibrator. /// The kind of calibrator to use. - /// A object, containing an . + /// A object, containing an . public static TOut CalibratePredictor(IHost host, CalibrateInputBase input, ICalibratorTrainer calibratorTrainer) where TOut : CommonOutputs.TrainerOutput, new() @@ -1935,7 +1935,7 @@ public static TOut CalibratePredictor(IHost host, CalibrateInputBase input calibratedPredictor = CalibratorUtils.TrainCalibrator(host, ch, calibratorTrainer, input.MaxRows, predictor, data); } - return new TOut() { PredictorModel = new PredictorModel(host, data, input.Data, calibratedPredictor) }; + return new TOut() { PredictorModel = new PredictorModelImpl(host, data, input.Data, calibratedPredictor) }; } } } diff --git a/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs b/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs index 23e658a818..a33348aa8f 100644 --- a/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs +++ b/src/Microsoft.ML.Data/Properties/AssemblyInfo.cs @@ -10,6 +10,8 @@ [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Core.Tests" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.InferenceTesting" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.OnnxTransformTest" + PublicKey.TestValue)] +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Predictor.Tests" + PublicKey.TestValue)] +[assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.TimeSeries.Tests" + PublicKey.TestValue)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Legacy" + PublicKey.Value)] [assembly: InternalsVisibleTo(assemblyName: "Microsoft.ML.Maml" + PublicKey.Value)] diff --git a/src/Microsoft.ML.Data/Training/TrainerEstimatorBase.cs b/src/Microsoft.ML.Data/Training/TrainerEstimatorBase.cs index 9049d751e8..583badaf62 100644 --- a/src/Microsoft.ML.Data/Training/TrainerEstimatorBase.cs +++ b/src/Microsoft.ML.Data/Training/TrainerEstimatorBase.cs @@ -142,7 +142,7 @@ protected TTransformer TrainTransformer(IDataView trainSet, protected abstract TTransformer MakeTransformer(TModel model, Schema trainSchema); - protected virtual RoleMappedData MakeRoles(IDataView data) => + private protected virtual RoleMappedData MakeRoles(IDataView data) => new RoleMappedData(data, label: LabelColumn.Name, feature: FeatureColumn.Name, weight: WeightColumn.Name); IPredictor ITrainer.Train(TrainContext context) => ((ITrainer)this).Train(context); @@ -172,7 +172,7 @@ public TrainerEstimatorBaseWithGroupId(IHost host, GroupIdColumn = groupId; } - protected override RoleMappedData MakeRoles(IDataView data) => + private protected override RoleMappedData MakeRoles(IDataView data) => new RoleMappedData(data, label: LabelColumn.Name, feature: FeatureColumn.Name, group: GroupIdColumn.Name, weight: WeightColumn.Name); } diff --git a/src/Microsoft.ML.Data/Training/TrainerUtils.cs b/src/Microsoft.ML.Data/Training/TrainerUtils.cs index 5a04db2b06..0375695bcc 100644 --- a/src/Microsoft.ML.Data/Training/TrainerUtils.cs +++ b/src/Microsoft.ML.Data/Training/TrainerUtils.cs @@ -38,7 +38,8 @@ public enum CursOpt : uint AllFeatures = Features | AllowBadFeatures, } - public static class TrainerUtils + [BestFriend] + internal static class TrainerUtils { /// /// Check for a standard (known-length vector of float) feature column. @@ -402,18 +403,16 @@ public static SchemaShape.Column MakeR4ScalarWeightColumn(string weightColumn, b /// repeated accesses, is to use a cursor factory (usually a nested class of the cursor /// class). This keeps track of what filtering options were actually useful. /// - public abstract class TrainingCursorBase : IDisposable + [BestFriend] + internal abstract class TrainingCursorBase : IDisposable { - public Row Row { get { return _cursor; } } + public Row Row => _cursor; private readonly RowCursor _cursor; private readonly Action _signal; - private long _skipCount; - private long _keptCount; - - public long SkippedRowCount { get { return _skipCount; } } - public long KeptRowCount { get { return _keptCount; } } + public long SkippedRowCount { get; private set; } + public long KeptRowCount { get; private set; } /// /// The base constructor class for the factory-based cursor creation. @@ -471,10 +470,10 @@ public bool MoveNext() } if (Accept()) { - _keptCount++; + KeptRowCount++; return true; } - _skipCount++; + SkippedRowCount++; } } @@ -636,7 +635,8 @@ public void Signal(CursOpt opt) /// /// This supports Weight (float), Group (ulong), and Id (RowId) columns. /// - public class StandardScalarCursor : TrainingCursorBase + [BestFriend] + internal class StandardScalarCursor : TrainingCursorBase { private readonly ValueGetter _getWeight; private readonly ValueGetter _getGroup; @@ -644,10 +644,8 @@ public class StandardScalarCursor : TrainingCursorBase private readonly bool _keepBadWeight; private readonly bool _keepBadGroup; - private long _badWeightCount; - private long _badGroupCount; - public long BadWeightCount { get { return _badWeightCount; } } - public long BadGroupCount { get { return _badGroupCount; } } + public long BadWeightCount { get; private set; } + public long BadGroupCount { get; private set; } public float Weight; public ulong Group; @@ -698,7 +696,7 @@ public override bool Accept() _getWeight(ref Weight); if (!_keepBadWeight && !(0 < Weight && Weight < float.PositiveInfinity)) { - _badWeightCount++; + BadWeightCount++; return false; } } @@ -707,7 +705,7 @@ public override bool Accept() _getGroup(ref Group); if (!_keepBadGroup && Group == 0) { - _badGroupCount++; + BadGroupCount++; return false; } } @@ -732,13 +730,13 @@ protected override StandardScalarCursor CreateCursorCore(RowCursor input, RoleMa /// This derives from and adds the feature column /// as a . /// - public class FeatureFloatVectorCursor : StandardScalarCursor + [BestFriend] + internal class FeatureFloatVectorCursor : StandardScalarCursor { private readonly ValueGetter> _get; private readonly bool _keepBad; - private long _badCount; - public long BadFeaturesRowCount { get { return _badCount; } } + public long BadFeaturesRowCount { get; private set; } public VBuffer Features; @@ -775,7 +773,7 @@ public override bool Accept() _get(ref Features); if (!_keepBad && !FloatUtils.IsFinite(Features.GetValues())) { - _badCount++; + BadFeaturesRowCount++; return false; } } @@ -799,14 +797,13 @@ protected override FeatureFloatVectorCursor CreateCursorCore(RowCursor input, Ro /// /// This derives from the FeatureFloatVectorCursor and adds the Label (float) column. /// - public class FloatLabelCursor : FeatureFloatVectorCursor + [BestFriend] + internal class FloatLabelCursor : FeatureFloatVectorCursor { private readonly ValueGetter _get; private readonly bool _keepBad; - private long _badCount; - - public long BadLabelCount { get { return _badCount; } } + public long BadLabelCount { get; private set; } public float Label; @@ -842,7 +839,7 @@ public override bool Accept() _get(ref Label); if (!_keepBad && !FloatUtils.IsFinite(Label)) { - _badCount++; + BadLabelCount++; return false; } } @@ -867,14 +864,14 @@ protected override FloatLabelCursor CreateCursorCore(RowCursor input, RoleMapped /// This derives from the FeatureFloatVectorCursor and adds the Label (int) column, /// enforcing multi-class semantics. /// - public class MultiClassLabelCursor : FeatureFloatVectorCursor + [BestFriend] + internal class MultiClassLabelCursor : FeatureFloatVectorCursor { private readonly int _classCount; private readonly ValueGetter _get; private readonly bool _keepBad; - private long _badCount; - public long BadLabelCount { get { return _badCount; } } + public long BadLabelCount { get; private set; } private float _raw; public int Label; @@ -915,7 +912,7 @@ public override bool Accept() Label = (int)_raw; if (!_keepBad && !(Label == _raw && (0 <= _raw && (_raw < _classCount || _classCount == 0)))) { - _badCount++; + BadLabelCount++; return false; } } diff --git a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs index bc229021bb..e6ad9e1ff6 100644 --- a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs @@ -473,7 +473,7 @@ public static CommonOutputs.TransformOutput Generate(IHostEnvironment env, Gener var xf = new GenerateNumberTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } diff --git a/src/Microsoft.ML.Data/Transforms/InvertHashUtils.cs b/src/Microsoft.ML.Data/Transforms/InvertHashUtils.cs index 8b683a73bf..2a5606aa85 100644 --- a/src/Microsoft.ML.Data/Transforms/InvertHashUtils.cs +++ b/src/Microsoft.ML.Data/Transforms/InvertHashUtils.cs @@ -13,7 +13,8 @@ namespace Microsoft.ML.Runtime.Data { - public static class InvertHashUtils + [BestFriend] + internal static class InvertHashUtils { /// /// Clears a destination StringBuilder. If it is currently null, allocates it. @@ -101,7 +102,8 @@ public static void AppendToEnd(StringBuilder src, StringBuilder dst, ref char[] } } - public sealed class InvertHashCollector + [BestFriend] + internal sealed class InvertHashCollector { /// /// This is a small struct that is meant to compare akin to the value, diff --git a/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs b/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs index 2c5acafd1d..799ff7eb80 100644 --- a/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs @@ -234,7 +234,7 @@ public static CommonOutputs.TransformOutput LabelIndicator(IHostEnvironment env, EntryPointUtils.CheckInputArgs(host, input); var xf = Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } diff --git a/src/Microsoft.ML.Data/Transforms/NopTransform.cs b/src/Microsoft.ML.Data/Transforms/NopTransform.cs index c57a60d387..278af962a9 100644 --- a/src/Microsoft.ML.Data/Transforms/NopTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/NopTransform.cs @@ -154,7 +154,7 @@ public static CommonOutputs.TransformOutput Nop(IHostEnvironment env, NopInput i EntryPointUtils.CheckInputArgs(host, input); var xf = CreateIfNeeded(host, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } \ No newline at end of file diff --git a/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs b/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs index e84d4eb8a4..6003c5cb84 100644 --- a/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs +++ b/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs @@ -103,7 +103,7 @@ public static CommonOutputs.TransformOutput MinMax(IHostEnvironment env, Normali EntryPointUtils.CheckInputArgs(host, input); var xf = NormalizeTransform.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.MeanVarianceNormalizer", Desc = NormalizeTransform.MeanVarNormalizerSummary, UserName = NormalizeTransform.MeanVarNormalizerUserName, ShortName = NormalizeTransform.MeanVarNormalizerShortName)] @@ -115,7 +115,7 @@ public static CommonOutputs.TransformOutput MeanVar(IHostEnvironment env, Normal EntryPointUtils.CheckInputArgs(host, input); var xf = NormalizeTransform.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.LogMeanVarianceNormalizer", Desc = NormalizeTransform.LogMeanVarNormalizerSummary, UserName = NormalizeTransform.LogMeanVarNormalizerUserName, ShortName = NormalizeTransform.LogMeanVarNormalizerShortName)] @@ -127,7 +127,7 @@ public static CommonOutputs.TransformOutput LogMeanVar(IHostEnvironment env, Nor EntryPointUtils.CheckInputArgs(host, input); var xf = NormalizeTransform.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.BinNormalizer", Desc = NormalizeTransform.BinNormalizerSummary, UserName = NormalizeTransform.BinNormalizerUserName, ShortName = NormalizeTransform.BinNormalizerShortName)] @@ -139,7 +139,7 @@ public static CommonOutputs.TransformOutput Bin(IHostEnvironment env, NormalizeT EntryPointUtils.CheckInputArgs(host, input); var xf = NormalizeTransform.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.ConditionalNormalizer", Desc = "Normalize the columns only if needed", UserName = "Normalize If Needed")] diff --git a/src/Microsoft.ML.Data/Transforms/TypeConverting.cs b/src/Microsoft.ML.Data/Transforms/TypeConverting.cs index 493d313cc2..74eb46f367 100644 --- a/src/Microsoft.ML.Data/Transforms/TypeConverting.cs +++ b/src/Microsoft.ML.Data/Transforms/TypeConverting.cs @@ -50,7 +50,7 @@ public static CommonOutputs.TransformOutput Convert(IHostEnvironment env, TypeCo return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingEstimator.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingEstimator.cs index ab74396671..6381b27654 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingEstimator.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingEstimator.cs @@ -118,7 +118,8 @@ public sealed class ToKeyFitResult // At the moment this is empty. Once PR #863 clears, we can change this class to hold the output // key-values metadata. - public ToKeyFitResult(ValueToKeyMappingTransformer.TermMap map) + [BestFriend] + internal ToKeyFitResult(ValueToKeyMappingTransformer.TermMap map) { } } diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs index 8edd76dff6..c3f61399fa 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs @@ -685,7 +685,8 @@ public override void Save(ModelSaveContext ctx) }); } - public TermMap GetTermMap(int iinfo) + [BestFriend] + internal TermMap GetTermMap(int iinfo) { Contracts.Assert(0 <= iinfo && iinfo < _unboundMaps.Length); return _unboundMaps[iinfo]; diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs index 8c7961c969..03bb9fbf8f 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs @@ -474,7 +474,8 @@ private static BoundTermMap Bind(IHostEnvironment env, Schema schema, TermMap un /// These are the immutable and serializable analogs to the used in /// training. /// - public abstract class TermMap + [BestFriend] + internal abstract class TermMap { /// /// The item type of the input type, that is, either the input type or, @@ -757,7 +758,7 @@ internal override void WriteTextTerms(TextWriter writer) } } - public abstract class TermMap : TermMap + internal abstract class TermMap : TermMap { protected TermMap(PrimitiveType type, int count) : base(type, count) diff --git a/src/Microsoft.ML.Data/Utilities/ComponentCreation.cs b/src/Microsoft.ML.Data/Utilities/ComponentCreation.cs index ab9274cc7a..75aeac4a5b 100644 --- a/src/Microsoft.ML.Data/Utilities/ComponentCreation.cs +++ b/src/Microsoft.ML.Data/Utilities/ComponentCreation.cs @@ -45,7 +45,8 @@ public static IDataView Zip(this IHostEnvironment env, IEnumerable so /// The name of the weight column. Can be null. /// Additional column mapping to be passed to the trainer or scorer (specific to the prediction type). Can be null or empty. /// The constructed examples. - public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView data, string features, string label = null, + [BestFriend] + internal static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView data, string features, string label = null, string group = null, string weight = null, IEnumerable> custom = null) { Contracts.CheckValue(env, nameof(env)); @@ -264,7 +265,7 @@ public static IDataTransform CreateTransform(this IHostEnvironment env, string s /// additional information, for example, label names. If this is null, no information will be /// extracted. /// The scored data. - public static IDataScorerTransform CreateScorer(this IHostEnvironment env, string settings, + internal static IDataScorerTransform CreateScorer(this IHostEnvironment env, string settings, RoleMappedData data, IPredictor predictor, RoleMappedSchema trainSchema = null) { Contracts.CheckValue(env, nameof(env)); @@ -295,7 +296,8 @@ public static IDataScorerTransform CreateScorer(this IHostEnvironment env, strin /// additional information, for example, label names. If this is null, no information will be /// extracted. /// The scored data. - public static IDataScorerTransform CreateDefaultScorer(this IHostEnvironment env, RoleMappedData data, + [BestFriend] + internal static IDataScorerTransform CreateDefaultScorer(this IHostEnvironment env, RoleMappedData data, IPredictor predictor, RoleMappedSchema trainSchema = null) { Contracts.CheckValue(env, nameof(env)); @@ -306,7 +308,8 @@ public static IDataScorerTransform CreateDefaultScorer(this IHostEnvironment env return ScoreUtils.GetScorer(predictor, data, env, trainSchema); } - public static IEvaluator CreateEvaluator(this IHostEnvironment env, string settings) + [BestFriend] + internal static IEvaluator CreateEvaluator(this IHostEnvironment env, string settings) { Contracts.CheckValue(env, nameof(env)); env.CheckNonWhiteSpace(settings, nameof(settings)); diff --git a/src/Microsoft.ML.Ensemble/Batch.cs b/src/Microsoft.ML.Ensemble/Batch.cs index e9c8fcf179..482456f83c 100644 --- a/src/Microsoft.ML.Ensemble/Batch.cs +++ b/src/Microsoft.ML.Ensemble/Batch.cs @@ -6,7 +6,7 @@ namespace Microsoft.ML.Runtime.Ensemble { - public sealed class Batch + internal sealed class Batch { public readonly RoleMappedData TrainInstances; public readonly RoleMappedData TestInstances; diff --git a/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs b/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs index 1d813b37f5..db8708d544 100644 --- a/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs +++ b/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs @@ -48,13 +48,13 @@ public enum ScoreCombiner public abstract class PipelineInputBase { [Argument(ArgumentType.Required, ShortName = "models", HelpText = "The models to combine into an ensemble", SortOrder = 1)] - public IPredictorModel[] Models; + public PredictorModel[] Models; } public abstract class InputBase { [Argument(ArgumentType.Required, ShortName = "models", HelpText = "The models to combine into an ensemble", SortOrder = 1)] - public IPredictorModel[] Models; + public PredictorModel[] Models; [Argument(ArgumentType.AtMostOnce, ShortName = "validate", HelpText = "Whether to validate that all the pipelines are identical", SortOrder = 5)] public bool ValidatePipelines = true; @@ -160,7 +160,7 @@ public static CommonOutputs.BinaryClassificationOutput CreateBinaryEnsemble(IHos var trainer = new EnsembleTrainer(host, args); var ensemble = trainer.CombineModels(input.Models.Select(pm => pm.Predictor as IPredictorProducing)); - var predictorModel = new PredictorModel(host, transformedData, startingData, ensemble); + var predictorModel = new PredictorModelImpl(host, transformedData, startingData, ensemble); var output = new CommonOutputs.BinaryClassificationOutput { PredictorModel = predictorModel }; return output; @@ -192,7 +192,7 @@ public static CommonOutputs.RegressionOutput CreateRegressionEnsemble(IHostEnvir var trainer = new RegressionEnsembleTrainer(host, args); var ensemble = trainer.CombineModels(input.Models.Select(pm => pm.Predictor as IPredictorProducing)); - var predictorModel = new PredictorModel(host, transformedData, startingData, ensemble); + var predictorModel = new PredictorModelImpl(host, transformedData, startingData, ensemble); var output = new CommonOutputs.RegressionOutput { PredictorModel = predictorModel }; return output; @@ -300,7 +300,7 @@ public static CommonOutputs.AnomalyDetectionOutput CreateAnomalyPipelineEnsemble return CreatePipelineEnsemble(host, input.Models, ensemble); } - private static TOut CreatePipelineEnsemble(IHostEnvironment env, IPredictorModel[] predictors, SchemaBindablePipelineEnsembleBase ensemble) + private static TOut CreatePipelineEnsemble(IHostEnvironment env, PredictorModel[] predictors, SchemaBindablePipelineEnsembleBase ensemble) where TOut : CommonOutputs.TrainerOutput, new() { var inputSchema = predictors[0].TransformModel.InputSchema; @@ -308,7 +308,7 @@ private static TOut CreatePipelineEnsemble(IHostEnvironment env, IPredicto // The role mappings are specific to the individual predictors. var rmd = new RoleMappedData(dv); - var predictorModel = new PredictorModel(env, rmd, dv, ensemble); + var predictorModel = new PredictorModelImpl(env, rmd, dv, ensemble); var output = new TOut { PredictorModel = predictorModel }; return output; @@ -323,7 +323,7 @@ private static TOut CreatePipelineEnsemble(IHostEnvironment env, IPredicto /// This method is used for comparing pipelines. Its outputs can be passed to /// to check if this pipeline is identical to another pipeline. /// - public static void SerializeRoleMappedData(IHostEnvironment env, IChannel ch, RoleMappedData data, + private static void SerializeRoleMappedData(IHostEnvironment env, IChannel ch, RoleMappedData data, out byte[][] dataSerialized, out string[] dataZipEntryNames) { Contracts.CheckValue(env, nameof(env)); @@ -357,7 +357,7 @@ public static void SerializeRoleMappedData(IHostEnvironment env, IChannel ch, Ro /// and . /// This method throws if for any of the entries the name/byte sequence are not identical. /// - public static void CheckSamePipeline(IHostEnvironment env, IChannel ch, + private static void CheckSamePipeline(IHostEnvironment env, IChannel ch, RoleMappedData dataToCompare, byte[][] dataSerialized, string[] dataZipEntryNames) { Contracts.CheckValue(env, nameof(env)); diff --git a/src/Microsoft.ML.Ensemble/OutputCombiners/IOutputCombiner.cs b/src/Microsoft.ML.Ensemble/OutputCombiners/IOutputCombiner.cs index 512974b717..6fcf55d5c8 100644 --- a/src/Microsoft.ML.Ensemble/OutputCombiners/IOutputCombiner.cs +++ b/src/Microsoft.ML.Ensemble/OutputCombiners/IOutputCombiner.cs @@ -28,7 +28,7 @@ public interface IOutputCombiner : IOutputCombiner Combiner GetCombiner(); } - public interface IStackingTrainer + internal interface IStackingTrainer { void Train(List>> models, RoleMappedData data, IHostEnvironment env); Single ValidationDatasetProportion { get; } diff --git a/src/Microsoft.ML.Ensemble/PipelineEnsemble.cs b/src/Microsoft.ML.Ensemble/PipelineEnsemble.cs index d393e6c316..59e3414b8b 100644 --- a/src/Microsoft.ML.Ensemble/PipelineEnsemble.cs +++ b/src/Microsoft.ML.Ensemble/PipelineEnsemble.cs @@ -80,7 +80,7 @@ public BoundBase(SchemaBindablePipelineEnsembleBase parent, RoleMappedSchema sch // Get the pipeline. var dv = new EmptyDataView(Parent.Host, schema.Schema); - var tm = new TransformModel(Parent.Host, dv, dv); + var tm = new TransformModelImpl(Parent.Host, dv, dv); var pipeline = Parent.PredictorModels[i].TransformModel.Apply(Parent.Host, tm); BoundPipelines[i] = pipeline.AsRowToRowMapper(Parent.Host); if (BoundPipelines[i] == null) @@ -190,7 +190,7 @@ public ValueGetter GetWeightGetter(Row input, int i, out Action disposer protected readonly IOutputCombiner Combiner; - protected SchemaBindablePipelineEnsemble(IHostEnvironment env, IPredictorModel[] predictors, + protected SchemaBindablePipelineEnsemble(IHostEnvironment env, PredictorModel[] predictors, IOutputCombiner combiner, string registrationName, string scoreColumnKind) : base(env, predictors, registrationName, scoreColumnKind) { @@ -241,7 +241,7 @@ public override PredictionKind PredictionKind } } - public ImplOne(IHostEnvironment env, IPredictorModel[] predictors, IRegressionOutputCombiner combiner, string scoreColumnKind) + public ImplOne(IHostEnvironment env, PredictorModel[] predictors, IRegressionOutputCombiner combiner, string scoreColumnKind) : base(env, predictors, combiner, LoaderSignature, scoreColumnKind) { } @@ -269,7 +269,7 @@ public override PredictionKind PredictionKind private readonly VectorType _scoreType; - public ImplVec(IHostEnvironment env, IPredictorModel[] predictors, IMultiClassOutputCombiner combiner) + public ImplVec(IHostEnvironment env, PredictorModel[] predictors, IMultiClassOutputCombiner combiner) : base(env, predictors, combiner, LoaderSignature, MetadataUtils.Const.ScoreColumnKind.MultiClassClassification) { int classCount = CheckLabelColumn(Host, predictors, false); @@ -291,7 +291,7 @@ private sealed class ImplOneWithCalibrator : SchemaBindablePipelineEnsemble 0); - PredictorModels = new IPredictorModel[length]; + PredictorModels = new PredictorModel[length]; for (int i = 0; i < PredictorModels.Length; i++) { string dir = @@ -467,7 +467,7 @@ protected SchemaBindablePipelineEnsembleBase(IHostEnvironment env, ModelLoadCont ? "PredictorModels" : Path.Combine(ctx.Directory, "PredictorModels"); using (var ent = ctx.Repository.OpenEntry(dir, $"PredictorModel_{i:000}")) - PredictorModels[i] = new PredictorModel(Host, ent.Stream); + PredictorModels[i] = new PredictorModelImpl(Host, ent.Stream); } length = ctx.Reader.ReadInt32(); @@ -512,7 +512,7 @@ public void Save(ModelSaveContext ctx) protected abstract void SaveCore(ModelSaveContext ctx); - public static SchemaBindablePipelineEnsembleBase Create(IHostEnvironment env, IPredictorModel[] predictors, IOutputCombiner combiner, string scoreColumnKind) + public static SchemaBindablePipelineEnsembleBase Create(IHostEnvironment env, PredictorModel[] predictors, IOutputCombiner combiner, string scoreColumnKind) { switch (scoreColumnKind) { @@ -580,7 +580,7 @@ void ICanSaveSummary.SaveSummary(TextWriter writer, RoleMappedSchema schema) } // Checks that the predictors have matching label columns, and returns the number of classes in all predictors. - protected static int CheckLabelColumn(IHostEnvironment env, IPredictorModel[] models, bool isBinary) + protected static int CheckLabelColumn(IHostEnvironment env, PredictorModel[] models, bool isBinary) { Contracts.CheckValue(env, nameof(env)); env.CheckNonEmpty(models, nameof(models)); @@ -609,7 +609,7 @@ protected static int CheckLabelColumn(IHostEnvironment env, IPredictorModel[] mo // When the label column is not a key, we check that the number of classes is the same for all the predictors, by checking the // OutputType property of the IValueMapper. // If any of the predictors do not implement IValueMapper we throw an exception. Returns the class count. - private static int CheckNonKeyLabelColumnCore(IHostEnvironment env, IPredictor pred, IPredictorModel[] models, bool isBinary, ColumnType labelType) + private static int CheckNonKeyLabelColumnCore(IHostEnvironment env, IPredictor pred, PredictorModel[] models, bool isBinary, ColumnType labelType) { env.Assert(!labelType.IsKey); env.AssertNonEmpty(models); @@ -636,7 +636,7 @@ private static int CheckNonKeyLabelColumnCore(IHostEnvironment env, IPredictor p // Checks that all the label columns of the model have the same key type as their label column - including the same // cardinality and the same key values, and returns the cardinality of the label column key. - private static int CheckKeyLabelColumnCore(IHostEnvironment env, IPredictorModel[] models, KeyType labelType, Schema schema, int labelIndex, ColumnType keyValuesType) + private static int CheckKeyLabelColumnCore(IHostEnvironment env, PredictorModel[] models, KeyType labelType, Schema schema, int labelIndex, ColumnType keyValuesType) where T : IEquatable { env.Assert(keyValuesType.ItemType.RawType == typeof(T)); diff --git a/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/AllFeatureSelector.cs b/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/AllFeatureSelector.cs index ad854e975f..3ce4cb1955 100644 --- a/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/AllFeatureSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/AllFeatureSelector.cs @@ -13,7 +13,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.FeatureSelector { - public sealed class AllFeatureSelector : IFeatureSelector + internal sealed class AllFeatureSelector : IFeatureSelector { public const string UserName = "All Feature Selector"; public const string LoadName = "AllFeatureSelector"; diff --git a/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/RandomFeatureSelector.cs b/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/RandomFeatureSelector.cs index b3650dd139..c22c6e8c48 100644 --- a/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/RandomFeatureSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/FeatureSelector/RandomFeatureSelector.cs @@ -17,7 +17,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.FeatureSelector { - public class RandomFeatureSelector : IFeatureSelector + internal class RandomFeatureSelector : IFeatureSelector { public const string UserName = "Random Feature Selector"; public const string LoadName = "RandomFeatureSelector"; diff --git a/src/Microsoft.ML.Ensemble/Selector/IFeatureSelector.cs b/src/Microsoft.ML.Ensemble/Selector/IFeatureSelector.cs index c53f7d244e..90aa692391 100644 --- a/src/Microsoft.ML.Ensemble/Selector/IFeatureSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/IFeatureSelector.cs @@ -8,7 +8,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector { - public interface IFeatureSelector + internal interface IFeatureSelector { Subset SelectFeatures(RoleMappedData data, Random rand); } @@ -16,7 +16,7 @@ public interface IFeatureSelector public delegate void SignatureEnsembleFeatureSelector(); [TlcModule.ComponentKind("EnsembleFeatureSelector")] - public interface ISupportFeatureSelectorFactory : IComponentFactory + internal interface ISupportFeatureSelectorFactory : IComponentFactory { } } diff --git a/src/Microsoft.ML.Ensemble/Selector/ISubModelSelector.cs b/src/Microsoft.ML.Ensemble/Selector/ISubModelSelector.cs index 96e9f5b886..33e5da6d7f 100644 --- a/src/Microsoft.ML.Ensemble/Selector/ISubModelSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/ISubModelSelector.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector { - public interface ISubModelSelector + internal interface ISubModelSelector { IList>> Prune(IList>> models); @@ -19,33 +19,33 @@ void CalculateMetrics(FeatureSubsetModel> model, IS Single ValidationDatasetProportion { get; } } - public interface IRegressionSubModelSelector : ISubModelSelector + internal interface IRegressionSubModelSelector : ISubModelSelector { } - public interface IBinarySubModelSelector : ISubModelSelector + internal interface IBinarySubModelSelector : ISubModelSelector { } - public interface IMulticlassSubModelSelector : ISubModelSelector> + internal interface IMulticlassSubModelSelector : ISubModelSelector> { } - public delegate void SignatureEnsembleSubModelSelector(); + internal delegate void SignatureEnsembleSubModelSelector(); [TlcModule.ComponentKind("EnsembleMulticlassSubModelSelector")] - public interface ISupportMulticlassSubModelSelectorFactory : IComponentFactory + internal interface ISupportMulticlassSubModelSelectorFactory : IComponentFactory { } [TlcModule.ComponentKind("EnsembleBinarySubModelSelector")] - public interface ISupportBinarySubModelSelectorFactory: IComponentFactory + internal interface ISupportBinarySubModelSelectorFactory: IComponentFactory { } [TlcModule.ComponentKind("EnsembleRegressionSubModelSelector")] - public interface ISupportRegressionSubModelSelectorFactory : IComponentFactory + internal interface ISupportRegressionSubModelSelectorFactory : IComponentFactory { } diff --git a/src/Microsoft.ML.Ensemble/Selector/ISubsetSelector.cs b/src/Microsoft.ML.Ensemble/Selector/ISubsetSelector.cs index 704bcd919b..983f094c34 100644 --- a/src/Microsoft.ML.Ensemble/Selector/ISubsetSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/ISubsetSelector.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector { - public interface ISubsetSelector + internal interface ISubsetSelector { void Initialize(RoleMappedData data, int size, int batchSize, Single validationDatasetProportion); IEnumerable GetBatches(Random rand); @@ -20,7 +20,7 @@ public interface ISubsetSelector public delegate void SignatureEnsembleDataSelector(); [TlcModule.ComponentKind("EnsembleSubsetSelector")] - public interface ISupportSubsetSelectorFactory : IComponentFactory + internal interface ISupportSubsetSelectorFactory : IComponentFactory { } } diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelector.cs index 4196ab3558..9c6f9e6691 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelector.cs @@ -11,7 +11,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public class AllSelector : BaseSubModelSelector, IBinarySubModelSelector, IRegressionSubModelSelector + internal sealed class AllSelector : BaseSubModelSelector, IBinarySubModelSelector, IRegressionSubModelSelector { public const string UserName = "All Selector"; public const string LoadName = "AllSelector"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelectorMultiClass.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelectorMultiClass.cs index 6c82fc25f5..2c674b8842 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelectorMultiClass.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/AllSelectorMultiClass.cs @@ -13,7 +13,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public class AllSelectorMultiClass : BaseSubModelSelector>, IMulticlassSubModelSelector + internal sealed class AllSelectorMultiClass : BaseSubModelSelector>, IMulticlassSubModelSelector { public const string UserName = "All Selector"; public const string LoadName = "AllSelectorMultiClass"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseBestPerformanceSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseBestPerformanceSelector.cs index 1e51044fb9..f4062787e2 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseBestPerformanceSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseBestPerformanceSelector.cs @@ -10,7 +10,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public abstract class BaseBestPerformanceSelector : SubModelDataSelector + internal abstract class BaseBestPerformanceSelector : SubModelDataSelector { protected abstract string MetricName { get; } diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseDiverseSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseDiverseSelector.cs index ac2e85dda6..0b72b16637 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseDiverseSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseDiverseSelector.cs @@ -13,7 +13,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public abstract class BaseDiverseSelector : SubModelDataSelector + internal abstract class BaseDiverseSelector : SubModelDataSelector where TDiversityMetric : class, IDiversityMeasure { public abstract class DiverseSelectorArguments : ArgumentsBase diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseSubModelSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseSubModelSelector.cs index 87ab03bb7c..9eb51c090a 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseSubModelSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BaseSubModelSelector.cs @@ -11,7 +11,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public abstract class BaseSubModelSelector : ISubModelSelector + internal abstract class BaseSubModelSelector : ISubModelSelector { protected readonly IHost Host; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorBinary.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorBinary.cs index 75d25df9d6..9ef2861d33 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorBinary.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorBinary.cs @@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { using TScalarPredictor = IPredictorProducing; - public sealed class BestDiverseSelectorBinary : BaseDiverseSelector, IBinarySubModelSelector + internal sealed class BestDiverseSelectorBinary : BaseDiverseSelector, IBinarySubModelSelector { public const string UserName = "Best Diverse Selector"; public const string LoadName = "BestDiverseSelector"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorMultiClass.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorMultiClass.cs index 8856982f00..a5a0864338 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorMultiClass.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorMultiClass.cs @@ -22,7 +22,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { using TVectorPredictor = IPredictorProducing>; - public sealed class BestDiverseSelectorMultiClass : BaseDiverseSelector, IDiversityMeasure>>, IMulticlassSubModelSelector + internal sealed class BestDiverseSelectorMultiClass : BaseDiverseSelector, IDiversityMeasure>>, IMulticlassSubModelSelector { public const string UserName = "Best Diverse Selector"; public const string LoadName = "BestDiverseSelectorMultiClass"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorRegression.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorRegression.cs index cbd2d47330..f4e717d73c 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorRegression.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestDiverseSelectorRegression.cs @@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { using TScalarPredictor = IPredictorProducing; - public sealed class BestDiverseSelectorRegression : BaseDiverseSelector, IRegressionSubModelSelector + internal sealed class BestDiverseSelectorRegression : BaseDiverseSelector, IRegressionSubModelSelector { public const string UserName = "Best Diverse Selector"; public const string LoadName = "BestDiverseSelectorRegression"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceRegressionSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceRegressionSelector.cs index 46f13e9cd1..0ad0e1024c 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceRegressionSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceRegressionSelector.cs @@ -16,7 +16,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public sealed class BestPerformanceRegressionSelector : BaseBestPerformanceSelector, IRegressionSubModelSelector + internal sealed class BestPerformanceRegressionSelector : BaseBestPerformanceSelector, IRegressionSubModelSelector { [TlcModule.Component(Name = LoadName, FriendlyName = UserName)] public sealed class Arguments : ArgumentsBase, ISupportRegressionSubModelSelectorFactory diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelector.cs index 76742ad0ec..84f00e0958 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelector.cs @@ -16,7 +16,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public sealed class BestPerformanceSelector : BaseBestPerformanceSelector, IBinarySubModelSelector + internal sealed class BestPerformanceSelector : BaseBestPerformanceSelector, IBinarySubModelSelector { [TlcModule.Component(Name = LoadName, FriendlyName = UserName)] public sealed class Arguments : ArgumentsBase, ISupportBinarySubModelSelectorFactory diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelectorMultiClass.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelectorMultiClass.cs index 0a9b9ac497..6e3414d945 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelectorMultiClass.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/BestPerformanceSelectorMultiClass.cs @@ -16,7 +16,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public class BestPerformanceSelectorMultiClass : BaseBestPerformanceSelector>, IMulticlassSubModelSelector + internal sealed class BestPerformanceSelectorMultiClass : BaseBestPerformanceSelector>, IMulticlassSubModelSelector { [TlcModule.Component(Name = LoadName, FriendlyName = UserName)] public sealed class Arguments : ArgumentsBase, ISupportMulticlassSubModelSelectorFactory diff --git a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/SubModelDataSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/SubModelDataSelector.cs index 5953b30d97..0bd623174f 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/SubModelDataSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubModelSelector/SubModelDataSelector.cs @@ -8,7 +8,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubModelSelector { - public abstract class SubModelDataSelector : BaseSubModelSelector + internal abstract class SubModelDataSelector : BaseSubModelSelector { public abstract class ArgumentsBase { diff --git a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/AllInstanceSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/AllInstanceSelector.cs index 483d6a5b0f..c56b6dc9e8 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/AllInstanceSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/AllInstanceSelector.cs @@ -16,7 +16,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubsetSelector { - public sealed class AllInstanceSelector : BaseSubsetSelector + internal sealed class AllInstanceSelector : BaseSubsetSelector { public const string UserName = "All Instance Selector"; public const string LoadName = "AllInstanceSelector"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs index 6e4d2a6b27..f3d26e646c 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs @@ -11,7 +11,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubsetSelector { - public abstract class BaseSubsetSelector : ISubsetSelector + internal abstract class BaseSubsetSelector : ISubsetSelector where TArgs : BaseSubsetSelector.ArgumentsBase { public abstract class ArgumentsBase diff --git a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BootstrapSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BootstrapSelector.cs index 93cc361a9e..c6020bbf8c 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BootstrapSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BootstrapSelector.cs @@ -18,7 +18,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubsetSelector { - public sealed class BootstrapSelector : BaseSubsetSelector + internal sealed class BootstrapSelector : BaseSubsetSelector { public const string UserName = "Bootstrap Selector"; public const string LoadName = "BootstrapSelector"; diff --git a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs index 7ddf7bb9d7..81a8ec927f 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs @@ -18,7 +18,7 @@ namespace Microsoft.ML.Runtime.Ensemble.Selector.SubsetSelector { - public sealed class RandomPartitionSelector : BaseSubsetSelector + internal sealed class RandomPartitionSelector : BaseSubsetSelector { public const string UserName = "Random Partition Selector"; public const string LoadName = "RandomPartitionSelector"; diff --git a/src/Microsoft.ML.Ensemble/Subset.cs b/src/Microsoft.ML.Ensemble/Subset.cs index 77183de6f3..b1baf8725c 100644 --- a/src/Microsoft.ML.Ensemble/Subset.cs +++ b/src/Microsoft.ML.Ensemble/Subset.cs @@ -7,7 +7,7 @@ namespace Microsoft.ML.Runtime.Ensemble { - public sealed class Subset + internal sealed class Subset { public readonly RoleMappedData Data; public readonly BitArray SelectedFeatures; diff --git a/src/Microsoft.ML.Ensemble/Trainer/EnsemblePredictor.cs b/src/Microsoft.ML.Ensemble/Trainer/EnsemblePredictor.cs index 30b2dce057..725294065c 100644 --- a/src/Microsoft.ML.Ensemble/Trainer/EnsemblePredictor.cs +++ b/src/Microsoft.ML.Ensemble/Trainer/EnsemblePredictor.cs @@ -109,7 +109,7 @@ private protected override void SaveCore(ModelSaveContext ctx) ctx.Writer.Write((int)PredictionKind); } - public ValueMapper GetMapper() + ValueMapper IValueMapper.GetMapper() { Host.Check(typeof(TIn) == typeof(VBuffer)); Host.Check(typeof(TOut) == typeof(Single)); diff --git a/src/Microsoft.ML.Ensemble/Trainer/EnsembleTrainerBase.cs b/src/Microsoft.ML.Ensemble/Trainer/EnsembleTrainerBase.cs index a8fc896c5b..7fffa89108 100644 --- a/src/Microsoft.ML.Ensemble/Trainer/EnsembleTrainerBase.cs +++ b/src/Microsoft.ML.Ensemble/Trainer/EnsembleTrainerBase.cs @@ -20,13 +20,14 @@ namespace Microsoft.ML.Runtime.Ensemble { using Stopwatch = System.Diagnostics.Stopwatch; - public abstract class EnsembleTrainerBase : TrainerBase + internal abstract class EnsembleTrainerBase : TrainerBase where TPredictor : class, IPredictorProducing where TSelector : class, ISubModelSelector where TCombiner : class, IOutputCombiner { public abstract class ArgumentsBase : LearnerInputBaseWithLabel { +#pragma warning disable CS0649 // These are set via reflection. [Argument(ArgumentType.AtMostOnce, HelpText = "Number of models per batch. If not specified, will default to 50 if there is only one base predictor, " + "or the number of base predictors otherwise.", ShortName = "nm", SortOrder = 3)] @@ -54,6 +55,7 @@ public abstract class ArgumentsBase : LearnerInputBaseWithLabel public bool ShowMetrics; internal abstract IComponentFactory>>[] GetPredictorFactories(); +#pragma warning restore CS0649 } private const int DefaultNumModels = 50; diff --git a/src/Microsoft.ML.Ensemble/Trainer/Multiclass/EnsembleMultiClassPredictor.cs b/src/Microsoft.ML.Ensemble/Trainer/Multiclass/EnsembleMultiClassPredictor.cs index a332d3ddb0..7181780c8f 100644 --- a/src/Microsoft.ML.Ensemble/Trainer/Multiclass/EnsembleMultiClassPredictor.cs +++ b/src/Microsoft.ML.Ensemble/Trainer/Multiclass/EnsembleMultiClassPredictor.cs @@ -40,8 +40,8 @@ private static VersionInfo GetVersionInfo() private readonly ColumnType _outputType; private readonly IValueMapper[] _mappers; - public ColumnType InputType { get { return _inputType; } } - public ColumnType OutputType { get { return _outputType; } } + public ColumnType InputType => _inputType; + public ColumnType OutputType => _outputType; internal EnsembleMultiClassPredictor(IHostEnvironment env, FeatureSubsetModel[] models, IMultiClassOutputCombiner combiner, Single[] weights = null) @@ -101,9 +101,9 @@ private protected override void SaveCore(ModelSaveContext ctx) ctx.SetVersionInfo(GetVersionInfo()); } - public override PredictionKind PredictionKind { get { return PredictionKind.MultiClassClassification; } } + public override PredictionKind PredictionKind => PredictionKind.MultiClassClassification; - public ValueMapper GetMapper() + ValueMapper IValueMapper.GetMapper() { Host.Check(typeof(TIn) == typeof(VBuffer)); Host.Check(typeof(TOut) == typeof(VBuffer)); diff --git a/src/Microsoft.ML.FastTree/FastTree.cs b/src/Microsoft.ML.FastTree/FastTree.cs index c790783cc9..7765535aed 100644 --- a/src/Microsoft.ML.FastTree/FastTree.cs +++ b/src/Microsoft.ML.FastTree/FastTree.cs @@ -58,12 +58,12 @@ public abstract class FastTreeTrainerBase : protected readonly bool AllowGC; protected TreeEnsemble TrainedEnsemble; protected int FeatureCount; - protected RoleMappedData ValidData; + private protected RoleMappedData ValidData; /// /// If not null, it's a test data set passed in from training context. It will be converted to one element in /// by calling in . /// - protected RoleMappedData TestData; + private protected RoleMappedData TestData; protected IParallelTraining ParallelTraining; protected OptimizationAlgorithm OptimizationAlgorithm; protected Dataset TrainSet; @@ -209,7 +209,7 @@ private void Initialize(IHostEnvironment env) InitializeThreads(numThreads); } - protected void ConvertData(RoleMappedData trainData) + private protected void ConvertData(RoleMappedData trainData) { MetadataUtils.TryGetCategoricalFeatureIndices(trainData.Schema.Schema, trainData.Schema.Feature.Index, out CategoricalFeatures); var useTranspose = UseTranspose(Args.DiskTranspose, trainData) && (ValidData == null || UseTranspose(Args.DiskTranspose, ValidData)); diff --git a/src/Microsoft.ML.FastTree/GamTrainer.cs b/src/Microsoft.ML.FastTree/GamTrainer.cs index 74eb2a4f22..019613d787 100644 --- a/src/Microsoft.ML.FastTree/GamTrainer.cs +++ b/src/Microsoft.ML.FastTree/GamTrainer.cs @@ -818,7 +818,7 @@ public override void Save(ModelSaveContext ctx) } } - public ValueMapper GetMapper() + ValueMapper IValueMapper.GetMapper() { Host.Check(typeof(TIn) == typeof(VBuffer)); Host.Check(typeof(TOut) == typeof(float)); @@ -994,7 +994,7 @@ void ICanSaveSummary.SaveSummary(TextWriter writer, RoleMappedSchema schema) ((ICanSaveInTextFormat)this).SaveAsText(writer, schema); } - public ValueMapper> GetFeatureContributionMapper + ValueMapper> IFeatureContributionMapper.GetFeatureContributionMapper (int top, int bottom, bool normalize) { Contracts.Check(typeof(TSrc) == typeof(VBuffer)); diff --git a/src/Microsoft.ML.FastTree/TreeEnsembleFeaturizer.cs b/src/Microsoft.ML.FastTree/TreeEnsembleFeaturizer.cs index ec3827286c..677a18c97d 100644 --- a/src/Microsoft.ML.FastTree/TreeEnsembleFeaturizer.cs +++ b/src/Microsoft.ML.FastTree/TreeEnsembleFeaturizer.cs @@ -575,7 +575,7 @@ public sealed class ArgumentsForEntryPoint : TransformInputBase public int LabelPermutationSeed; [Argument(ArgumentType.Required, HelpText = "Trainer to use", SortOrder = 10, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } #pragma warning restore CS0649 @@ -809,7 +809,7 @@ public static CommonOutputs.TransformOutput Featurizer(IHostEnvironment env, Tre EntryPointUtils.CheckInputArgs(host, input); var xf = TreeEnsembleFeaturizerTransform.CreateForEntryPoint(env, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } #pragma warning restore CS0649 } diff --git a/src/Microsoft.ML.ImageAnalytics/EntryPoints/ImageAnalytics.cs b/src/Microsoft.ML.ImageAnalytics/EntryPoints/ImageAnalytics.cs index 921309d7ef..dc63fa0f17 100644 --- a/src/Microsoft.ML.ImageAnalytics/EntryPoints/ImageAnalytics.cs +++ b/src/Microsoft.ML.ImageAnalytics/EntryPoints/ImageAnalytics.cs @@ -19,7 +19,7 @@ public static CommonOutputs.TransformOutput ImageLoader(IHostEnvironment env, Im var xf = ImageLoaderTransform.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -32,7 +32,7 @@ public static CommonOutputs.TransformOutput ImageResizer(IHostEnvironment env, I var xf = ImageResizerTransform.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -45,7 +45,7 @@ public static CommonOutputs.TransformOutput ImagePixelExtractor(IHostEnvironment var xf = ImagePixelExtractorTransform.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -58,7 +58,7 @@ public static CommonOutputs.TransformOutput ImageGrayscale(IHostEnvironment env, var xf = ImageGrayscaleTransform.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -71,7 +71,7 @@ public static CommonOutputs.TransformOutput VectorToImage(IHostEnvironment env, var xf = new VectorToImageTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } diff --git a/src/Microsoft.ML.Legacy/CSharpApi.cs b/src/Microsoft.ML.Legacy/CSharpApi.cs index f91479b881..432fc01779 100644 --- a/src/Microsoft.ML.Legacy/CSharpApi.cs +++ b/src/Microsoft.ML.Legacy/CSharpApi.cs @@ -2070,7 +2070,7 @@ namespace Legacy.Data { /// - /// Create an array variable of IPredictorModel + /// Create an array variable of PredictorModel /// [Obsolete] public sealed partial class PredictorModelArrayConverter @@ -2081,7 +2081,7 @@ public sealed partial class PredictorModelArrayConverter /// The models /// [Obsolete] - public ArrayVar Model { get; set; } = new ArrayVar(); + public ArrayVar Model { get; set; } = new ArrayVar(); [Obsolete] @@ -2090,7 +2090,7 @@ public sealed class Output /// /// The model array /// - public ArrayVar OutputModel { get; set; } = new ArrayVar(); + public ArrayVar OutputModel { get; set; } = new ArrayVar(); } } @@ -2329,7 +2329,7 @@ public TextLoaderPipelineStep (Output output) } public Var Data { get; } - public Var Model { get; } + public Var Model { get; } } /// @@ -2361,7 +2361,7 @@ namespace Legacy.Data { /// - /// Create an array variable of ITransformModel + /// Create an array variable of TransformModel /// [Obsolete] public sealed partial class TransformModelArrayConverter @@ -2372,7 +2372,7 @@ public sealed partial class TransformModelArrayConverter /// The models /// [Obsolete] - public ArrayVar TransformModel { get; set; } = new ArrayVar(); + public ArrayVar TransformModel { get; set; } = new ArrayVar(); [Obsolete] @@ -2381,7 +2381,7 @@ public sealed class Output /// /// The model array /// - public ArrayVar OutputModel { get; set; } = new ArrayVar(); + public ArrayVar OutputModel { get; set; } = new ArrayVar(); } } @@ -2515,7 +2515,7 @@ public sealed partial class AnomalyPipelineEnsemble /// The models to combine into an ensemble /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); [Obsolete] @@ -2524,7 +2524,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IAno /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -2662,7 +2662,7 @@ public sealed partial class CrossValidationBinaryMacroSubGraphOutput /// The model /// [Obsolete] - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } @@ -2717,7 +2717,7 @@ public sealed class Output /// /// The trained model /// - public ArrayVar PredictorModel { get; set; } = new ArrayVar(); + public ArrayVar PredictorModel { get; set; } = new ArrayVar(); /// /// Warning dataset @@ -2772,7 +2772,7 @@ public sealed partial class BinaryEnsemble /// The models to combine into an ensemble /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); /// /// Whether to validate that all the pipelines are identical @@ -2787,7 +2787,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -2814,7 +2814,7 @@ public sealed partial class BinaryPipelineEnsemble /// The models to combine into an ensemble /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); [Obsolete] @@ -2823,7 +2823,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -3142,13 +3142,13 @@ public sealed partial class CrossValidationMacroSubGraphOutput /// The predictor model /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// The transform model /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); } @@ -3170,7 +3170,7 @@ public sealed partial class CrossValidator /// The transform model from the pipeline before this command. It gets included in the Output.PredictorModel. /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); /// /// The training subgraph @@ -3239,12 +3239,12 @@ public sealed class Output /// /// The final model including the trained predictor model and the model from the transforms, provided as the Input.TransformModel. /// - public ArrayVar PredictorModel { get; set; } = new ArrayVar(); + public ArrayVar PredictorModel { get; set; } = new ArrayVar(); /// /// The final model including the trained predictor model and the model from the transforms, provided as the Input.TransformModel. /// - public ArrayVar TransformModel { get; set; } = new ArrayVar(); + public ArrayVar TransformModel { get; set; } = new ArrayVar(); /// /// Warning dataset @@ -3332,7 +3332,7 @@ public sealed partial class DatasetTransformer : Microsoft.ML.Runtime.EntryPoint /// Transform model /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); /// /// Input dataset @@ -3381,7 +3381,7 @@ public DatasetTransformerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -3401,7 +3401,7 @@ public sealed partial class EnsembleSummary /// The predictor to summarize /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); [Obsolete] @@ -3448,7 +3448,7 @@ public sealed partial class FixedPlattCalibrator : Microsoft.ML.Runtime.EntryPoi /// The predictor to calibrate /// [Obsolete] - public Var UncalibratedPredictorModel { get; set; } = new Var(); + public Var UncalibratedPredictorModel { get; set; } = new Var(); /// /// The maximum number of examples to train the calibrator on @@ -3470,7 +3470,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ICal /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -3502,7 +3502,7 @@ public FixedPlattCalibratorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -3528,7 +3528,7 @@ public sealed partial class MultiClassPipelineEnsemble /// The models to combine into an ensemble /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); [Obsolete] @@ -3537,7 +3537,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IMul /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -3641,7 +3641,7 @@ public sealed partial class NaiveCalibrator : Microsoft.ML.Runtime.EntryPoints.C /// The predictor to calibrate /// [Obsolete] - public Var UncalibratedPredictorModel { get; set; } = new Var(); + public Var UncalibratedPredictorModel { get; set; } = new Var(); /// /// The maximum number of examples to train the calibrator on @@ -3663,7 +3663,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ICal /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -3695,7 +3695,7 @@ public NaiveCalibratorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -3728,7 +3728,7 @@ public sealed partial class OneVersusAllMacroSubGraphOutput /// The predictor model for the subgraph exemplar. /// [Obsolete] - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } @@ -3799,7 +3799,7 @@ public sealed class Output /// /// The trained multiclass model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -3831,7 +3831,7 @@ public OneVersusAllPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -3894,7 +3894,7 @@ public sealed partial class OnnxConverter /// Model that needs to be converted to ONNX format. /// [Obsolete] - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); /// /// The targeted ONNX version. It can be either "Stable" or "Experimental". If "Experimental" is used, produced model can contain components that is not officially supported in ONNX standard. @@ -3931,7 +3931,7 @@ public sealed partial class OvaModelCombiner : Microsoft.ML.Runtime.EntryPoints. /// Input models /// [Obsolete] - public ArrayVar ModelArray { get; set; } = new ArrayVar(); + public ArrayVar ModelArray { get; set; } = new ArrayVar(); /// /// Use probabilities from learners instead of raw values. @@ -3982,7 +3982,7 @@ public sealed class Output /// /// Predictor model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -4014,7 +4014,7 @@ public OvaModelCombinerPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -4034,7 +4034,7 @@ public sealed partial class PAVCalibrator : Microsoft.ML.Runtime.EntryPoints.Com /// The predictor to calibrate /// [Obsolete] - public Var UncalibratedPredictorModel { get; set; } = new Var(); + public Var UncalibratedPredictorModel { get; set; } = new Var(); /// /// The maximum number of examples to train the calibrator on @@ -4056,7 +4056,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ICal /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -4088,7 +4088,7 @@ public PAVCalibratorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -4108,7 +4108,7 @@ public sealed partial class PlattCalibrator : Microsoft.ML.Runtime.EntryPoints.C /// The predictor to calibrate /// [Obsolete] - public Var UncalibratedPredictorModel { get; set; } = new Var(); + public Var UncalibratedPredictorModel { get; set; } = new Var(); /// /// The maximum number of examples to train the calibrator on @@ -4130,7 +4130,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ICal /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -4162,7 +4162,7 @@ public PlattCalibratorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -4359,7 +4359,7 @@ public sealed partial class RegressionEnsemble /// The models to combine into an ensemble /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); /// /// Whether to validate that all the pipelines are identical @@ -4374,7 +4374,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -4478,7 +4478,7 @@ public sealed partial class RegressionPipelineEnsemble /// The models to combine into an ensemble /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); [Obsolete] @@ -4487,7 +4487,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -4508,7 +4508,7 @@ public sealed partial class Summarizer /// The predictor to summarize /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); [Obsolete] @@ -4549,7 +4549,7 @@ public sealed partial class TrainTestBinaryMacroSubGraphOutput /// The model /// [Obsolete] - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } @@ -4598,7 +4598,7 @@ public sealed class Output /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// Warning dataset @@ -4645,13 +4645,13 @@ public sealed partial class TrainTestMacroSubGraphOutput /// The predictor model /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// Transform model /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); } @@ -4679,7 +4679,7 @@ public sealed partial class TrainTestEvaluator /// The aggregated transform model from the pipeline before this command, to apply to the test data, and also include in the final model, together with the predictor model. /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); /// /// The training subgraph @@ -4748,12 +4748,12 @@ public sealed class Output /// /// The final model including the trained predictor model and the model from the transforms, provided as the Input.TransformModel. /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// The final model including the trained predictor model and the model from the transforms, provided as the Input.TransformModel. /// - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); /// /// Warning dataset @@ -4846,7 +4846,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -4881,7 +4881,7 @@ public ExponentialAveragePipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -4959,7 +4959,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -4994,7 +4994,7 @@ public IidChangePointDetectorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5066,7 +5066,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -5101,7 +5101,7 @@ public IidSpikeDetectorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5159,7 +5159,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -5194,7 +5194,7 @@ public PercentileThresholdTransformPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5264,7 +5264,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -5299,7 +5299,7 @@ public PValueTransformPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5370,7 +5370,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -5405,7 +5405,7 @@ public SlidingWindowTransformPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5511,7 +5511,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -5546,7 +5546,7 @@ public SsaChangePointDetectorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5636,7 +5636,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -5671,7 +5671,7 @@ public SsaSpikeDetectorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5833,7 +5833,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -5865,7 +5865,7 @@ public AveragedPerceptronBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -5963,7 +5963,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -5995,7 +5995,7 @@ public EnsembleBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -6093,7 +6093,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IMul /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -6125,7 +6125,7 @@ public EnsembleClassificationPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -6223,7 +6223,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -6255,7 +6255,7 @@ public EnsembleRegressionPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -6578,7 +6578,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -6610,7 +6610,7 @@ public FastForestBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -6912,7 +6912,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -6944,7 +6944,7 @@ public FastForestRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -7384,7 +7384,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -7416,7 +7416,7 @@ public FastTreeBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -7890,7 +7890,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IRan /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -7922,7 +7922,7 @@ public FastTreeRankerPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -8348,7 +8348,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -8380,7 +8380,7 @@ public FastTreeRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -8811,7 +8811,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -8843,7 +8843,7 @@ public FastTreeTweedieRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -8955,7 +8955,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -8987,7 +8987,7 @@ public FieldAwareFactorizationMachineBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -9133,7 +9133,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -9165,7 +9165,7 @@ public GeneralizedAdditiveModelBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -9311,7 +9311,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -9343,7 +9343,7 @@ public GeneralizedAdditiveModelRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -9440,7 +9440,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IClu /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -9472,7 +9472,7 @@ public KMeansPlusPlusClustererPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -9700,7 +9700,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -9732,7 +9732,7 @@ public LightGbmBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -9945,7 +9945,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IMul /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -9977,7 +9977,7 @@ public LightGbmClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -10190,7 +10190,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IRan /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -10222,7 +10222,7 @@ public LightGbmRankerPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -10435,7 +10435,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -10467,7 +10467,7 @@ public LightGbmRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -10593,7 +10593,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -10625,7 +10625,7 @@ public LinearSvmBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -10768,7 +10768,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -10800,7 +10800,7 @@ public LogisticRegressionBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -10943,7 +10943,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IMul /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -10975,7 +10975,7 @@ public LogisticRegressionClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11027,7 +11027,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IMul /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11059,7 +11059,7 @@ public NaiveBayesClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11208,7 +11208,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11240,7 +11240,7 @@ public OnlineGradientDescentRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11310,7 +11310,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11342,7 +11342,7 @@ public OrdinaryLeastSquaresRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11421,7 +11421,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IAno /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11453,7 +11453,7 @@ public PcaAnomalyDetectorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11590,7 +11590,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11622,7 +11622,7 @@ public PoissonRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11754,7 +11754,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11786,7 +11786,7 @@ public StochasticDualCoordinateAscentBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -11899,7 +11899,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IMul /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -11931,7 +11931,7 @@ public StochasticDualCoordinateAscentClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12044,7 +12044,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IReg /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -12076,7 +12076,7 @@ public StochasticDualCoordinateAscentRegressorPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12207,7 +12207,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -12239,7 +12239,7 @@ public StochasticGradientDescentBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12348,7 +12348,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.IBin /// /// The trained model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } [Obsolete] @@ -12380,7 +12380,7 @@ public SymSgdBinaryClassifierPipelineStep(Output output) } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12438,7 +12438,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -12473,7 +12473,7 @@ public ApproximateBootstrapSamplerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12493,7 +12493,7 @@ public sealed partial class BinaryPredictionScoreColumnsRenamer : Microsoft.ML.R /// The predictor model used in scoring /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// Input dataset @@ -12513,7 +12513,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -12548,7 +12548,7 @@ public BinaryPredictionScoreColumnsRenamerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12681,7 +12681,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -12716,7 +12716,7 @@ public BinNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -12881,7 +12881,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -12916,7 +12916,7 @@ public CategoricalHashOneHotVectorizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13079,7 +13079,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13114,7 +13114,7 @@ public CategoricalOneHotVectorizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13215,7 +13215,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13250,7 +13250,7 @@ public CharacterTokenizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13323,7 +13323,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13358,7 +13358,7 @@ public ColumnConcatenatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13455,7 +13455,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13490,7 +13490,7 @@ public ColumnCopierPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13548,7 +13548,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13583,7 +13583,7 @@ public ColumnSelectorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13704,7 +13704,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13739,7 +13739,7 @@ public ColumnTypeConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13783,7 +13783,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13818,7 +13818,7 @@ public CombinerByContiguousGroupIdPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -13939,7 +13939,7 @@ public sealed class Output /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -13974,7 +13974,7 @@ public ConditionalNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14050,7 +14050,7 @@ public DataCachePipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14076,7 +14076,7 @@ public sealed partial class DatasetScorer /// The predictor model to apply to data /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// Suffix to append to the score columns @@ -14096,7 +14096,7 @@ public sealed class Output /// /// The scoring transform /// - public Var ScoringTransform { get; set; } = new Var(); + public Var ScoringTransform { get; set; } = new Var(); } } @@ -14123,7 +14123,7 @@ public sealed partial class DatasetTransformScorer /// The transform model to apply to data /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); [Obsolete] @@ -14137,7 +14137,7 @@ public sealed class Output /// /// The scoring transform /// - public Var ScoringTransform { get; set; } = new Var(); + public Var ScoringTransform { get; set; } = new Var(); } } @@ -14283,7 +14283,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -14318,7 +14318,7 @@ public DictionarizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14358,7 +14358,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -14393,7 +14393,7 @@ public FeatureCombinerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14438,7 +14438,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -14473,7 +14473,7 @@ public FeatureSelectorByCountPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14530,7 +14530,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -14565,7 +14565,7 @@ public FeatureSelectorByMutualInformationPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14696,7 +14696,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -14731,7 +14731,7 @@ public GlobalContrastNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -14881,7 +14881,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -14916,7 +14916,7 @@ public HashConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15013,7 +15013,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15048,7 +15048,7 @@ public ImageGrayscalePipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15151,7 +15151,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15186,7 +15186,7 @@ public ImageLoaderPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15379,7 +15379,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15414,7 +15414,7 @@ public ImagePixelExtractorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15576,7 +15576,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15611,7 +15611,7 @@ public ImageResizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15706,7 +15706,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15741,7 +15741,7 @@ public KeyToTextConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15787,7 +15787,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15822,7 +15822,7 @@ public LabelColumnKeyBooleanConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -15931,7 +15931,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -15966,7 +15966,7 @@ public LabelIndicatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -16006,7 +16006,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -16041,7 +16041,7 @@ public LabelToFloatConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -16281,7 +16281,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -16316,7 +16316,7 @@ public LightLdaPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -16431,7 +16431,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -16466,7 +16466,7 @@ public LogMeanVarianceNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -16594,7 +16594,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -16629,7 +16629,7 @@ public LpNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -16649,13 +16649,13 @@ public sealed partial class ManyHeterogeneousModelCombiner /// Transform model /// [Obsolete] - public ArrayVar TransformModels { get; set; } = new ArrayVar(); + public ArrayVar TransformModels { get; set; } = new ArrayVar(); /// /// Predictor model /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); [Obsolete] @@ -16664,7 +16664,7 @@ public sealed class Output /// /// Predictor model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -16763,7 +16763,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -16798,7 +16798,7 @@ public MeanVarianceNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -16890,7 +16890,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -16925,7 +16925,7 @@ public MinMaxNormalizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17066,7 +17066,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17101,7 +17101,7 @@ public MissingValueHandlerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17197,7 +17197,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17232,7 +17232,7 @@ public MissingValueIndicatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17328,7 +17328,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17363,7 +17363,7 @@ public MissingValuesDropperPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17408,7 +17408,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17443,7 +17443,7 @@ public MissingValuesRowDropperPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17579,7 +17579,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17614,7 +17614,7 @@ public MissingValueSubstitutorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17634,7 +17634,7 @@ public sealed partial class ModelCombiner /// Input models /// [Obsolete] - public ArrayVar Models { get; set; } = new ArrayVar(); + public ArrayVar Models { get; set; } = new ArrayVar(); [Obsolete] @@ -17643,7 +17643,7 @@ public sealed class Output /// /// Combined model /// - public Var OutputModel { get; set; } = new Var(); + public Var OutputModel { get; set; } = new Var(); } } @@ -17807,7 +17807,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17842,7 +17842,7 @@ public NGramTranslatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17876,7 +17876,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17911,7 +17911,7 @@ public NoOperationPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -17950,7 +17950,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -17985,7 +17985,7 @@ public OptionalColumnCreatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18141,7 +18141,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18176,7 +18176,7 @@ public PcaCalculatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18216,7 +18216,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18251,7 +18251,7 @@ public PredictedLabelColumnOriginalValueConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18326,7 +18326,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18361,7 +18361,7 @@ public RandomNumberGeneratorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18431,7 +18431,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18466,7 +18466,7 @@ public RowRangeFilterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18512,7 +18512,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18547,7 +18547,7 @@ public RowSkipAndTakeFilterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18587,7 +18587,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18622,7 +18622,7 @@ public RowSkipFilterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18662,7 +18662,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18697,7 +18697,7 @@ public RowTakeFilterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18737,7 +18737,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18772,7 +18772,7 @@ public ScoreColumnSelectorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18792,7 +18792,7 @@ public sealed partial class Scorer /// The predictor model to turn into a transform /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); [Obsolete] @@ -18806,7 +18806,7 @@ public sealed class Output /// /// The scoring transform /// - public Var ScoringTransform { get; set; } = new Var(); + public Var ScoringTransform { get; set; } = new Var(); } } @@ -18860,7 +18860,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18895,7 +18895,7 @@ public SegregatorPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -18940,7 +18940,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -18975,7 +18975,7 @@ public SentimentAnalyzerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -19098,7 +19098,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -19133,7 +19133,7 @@ public TensorFlowScorerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -19323,7 +19323,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -19358,7 +19358,7 @@ public TextFeaturizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -19461,7 +19461,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -19496,7 +19496,7 @@ public TextToKeyConverterPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -19573,7 +19573,7 @@ public sealed partial class TreeLeafFeaturizer : Microsoft.ML.Runtime.EntryPoint /// Trainer to use /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); /// /// Input dataset @@ -19593,7 +19593,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -19628,7 +19628,7 @@ public TreeLeafFeaturizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -19648,13 +19648,13 @@ public sealed partial class TwoHeterogeneousModelCombiner /// Transform model /// [Obsolete] - public Var TransformModel { get; set; } = new Var(); + public Var TransformModel { get; set; } = new Var(); /// /// Predictor model /// [Obsolete] - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); [Obsolete] @@ -19663,7 +19663,7 @@ public sealed class Output /// /// Predictor model /// - public Var PredictorModel { get; set; } = new Var(); + public Var PredictorModel { get; set; } = new Var(); } } @@ -19869,7 +19869,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -19904,7 +19904,7 @@ public VectorToImagePipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -20027,7 +20027,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -20062,7 +20062,7 @@ public WordEmbeddingsPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } @@ -20170,7 +20170,7 @@ public sealed class Output : Microsoft.ML.Runtime.EntryPoints.CommonOutputs.ITra /// /// Transform model /// - public Var Model { get; set; } = new Var(); + public Var Model { get; set; } = new Var(); } [Obsolete] @@ -20205,7 +20205,7 @@ public WordTokenizerPipelineStep(Output output) [Obsolete] public Var Data { get; } [Obsolete] - public Var Model { get; } + public Var Model { get; } } } } diff --git a/src/Microsoft.ML.Legacy/Data/CollectionDataSource.cs b/src/Microsoft.ML.Legacy/Data/CollectionDataSource.cs index 18b6d2b6c3..ae0b7cf9ad 100644 --- a/src/Microsoft.ML.Legacy/Data/CollectionDataSource.cs +++ b/src/Microsoft.ML.Legacy/Data/CollectionDataSource.cs @@ -99,7 +99,7 @@ public CollectionDataSourcePipelineStep(Var data) } public Var Data { get; } - public Var Model => null; + public Var Model => null; } } } diff --git a/src/Microsoft.ML.Legacy/ILearningPipelineItem.cs b/src/Microsoft.ML.Legacy/ILearningPipelineItem.cs index 0e3df2aea6..f0b3019c87 100644 --- a/src/Microsoft.ML.Legacy/ILearningPipelineItem.cs +++ b/src/Microsoft.ML.Legacy/ILearningPipelineItem.cs @@ -47,12 +47,12 @@ public interface ILearningPipelineStep public interface ILearningPipelineDataStep : ILearningPipelineStep { Var Data { get; } - Var Model { get; } + Var Model { get; } } [Obsolete] public interface ILearningPipelinePredictorStep : ILearningPipelineStep { - Var Model { get; } + Var Model { get; } } } \ No newline at end of file diff --git a/src/Microsoft.ML.Legacy/LearningPipeline.cs b/src/Microsoft.ML.Legacy/LearningPipeline.cs index 37adedecbc..944fe1b04c 100644 --- a/src/Microsoft.ML.Legacy/LearningPipeline.cs +++ b/src/Microsoft.ML.Legacy/LearningPipeline.cs @@ -17,14 +17,14 @@ namespace Microsoft.ML.Legacy [Obsolete] public sealed class ScorerPipelineStep : ILearningPipelineDataStep { - public ScorerPipelineStep(Var data, Var model) + public ScorerPipelineStep(Var data, Var model) { Data = data; Model = model; } public Var Data { get; } - public Var Model { get; } + public Var Model { get; } } /// @@ -167,8 +167,8 @@ public PredictionModel Train() Experiment experiment = environment.CreateExperiment(); ILearningPipelineStep step = null; List loaders = new List(); - List> transformModels = new List>(); - Var lastTransformModel = null; + List> transformModels = new List>(); + Var lastTransformModel = null; foreach (ILearningPipelineItem currentItem in this) { @@ -183,13 +183,13 @@ public PredictionModel Train() if (lastTransformModel != null) transformModels.Insert(0, lastTransformModel); - Var predictorModel; + Var predictorModel; if (transformModels.Count != 0) { var localModelInput = new Transforms.ManyHeterogeneousModelCombiner { PredictorModel = predictorDataStep.Model, - TransformModels = new ArrayVar(transformModels.ToArray()) + TransformModels = new ArrayVar(transformModels.ToArray()) }; var localModelOutput = experiment.Add(localModelInput); predictorModel = localModelOutput.PredictorModel; @@ -216,7 +216,7 @@ public PredictionModel Train() var modelInput = new Transforms.ModelCombiner { - Models = new ArrayVar(transformModels.ToArray()) + Models = new ArrayVar(transformModels.ToArray()) }; var modelOutput = experiment.Add(modelInput); @@ -230,7 +230,7 @@ public PredictionModel Train() } experiment.Run(); - ITransformModel model = experiment.GetOutput(lastTransformModel); + TransformModel model = experiment.GetOutput(lastTransformModel); BatchPredictionEngine predictor; using (var memoryStream = new MemoryStream()) { diff --git a/src/Microsoft.ML.Legacy/Models/CrossValidator.cs b/src/Microsoft.ML.Legacy/Models/CrossValidator.cs index 81ac48a733..78a69d7a96 100644 --- a/src/Microsoft.ML.Legacy/Models/CrossValidator.cs +++ b/src/Microsoft.ML.Legacy/Models/CrossValidator.cs @@ -33,10 +33,10 @@ public CrossValidationOutput CrossValidate(Lea Experiment subGraph = environment.CreateExperiment(); ILearningPipelineStep step = null; List loaders = new List(); - List> transformModels = new List>(); - Var lastTransformModel = null; + List> transformModels = new List>(); + Var lastTransformModel = null; Var firstPipelineDataStep = null; - Var firstModel = null; + Var firstModel = null; ILearningPipelineItem firstTransform = null; foreach (ILearningPipelineItem currentItem in pipeline) { @@ -62,13 +62,13 @@ public CrossValidationOutput CrossValidate(Lea if (lastTransformModel != null) transformModels.Insert(0, lastTransformModel); - Var predictorModel; + Var predictorModel; if (transformModels.Count != 0) { var localModelInput = new Transforms.ManyHeterogeneousModelCombiner { PredictorModel = predictorDataStep.Model, - TransformModels = new ArrayVar(transformModels.ToArray()) + TransformModels = new ArrayVar(transformModels.ToArray()) }; var localModelOutput = subGraph.Add(localModelInput); predictorModel = localModelOutput.PredictorModel; @@ -96,7 +96,7 @@ public CrossValidationOutput CrossValidate(Lea var modelInput = new Transforms.ModelCombiner { - Models = new ArrayVar(transformModels.ToArray()) + Models = new ArrayVar(transformModels.ToArray()) }; var modelOutput = subGraph.Add(modelInput); @@ -159,7 +159,7 @@ public CrossValidationOutput CrossValidate(Lea throw Contracts.Except($"{Kind.ToString()} is not supported at the moment."); } - ITransformModel model = experiment.GetOutput(crossValidateOutput.TransformModel[Index]); + TransformModel model = experiment.GetOutput(crossValidateOutput.TransformModel[Index]); BatchPredictionEngine predictor; using (var memoryStream = new MemoryStream()) { diff --git a/src/Microsoft.ML.Legacy/Models/OneVersusAll.cs b/src/Microsoft.ML.Legacy/Models/OneVersusAll.cs index e1064506a0..82a58ab452 100644 --- a/src/Microsoft.ML.Legacy/Models/OneVersusAll.cs +++ b/src/Microsoft.ML.Legacy/Models/OneVersusAll.cs @@ -82,7 +82,7 @@ public OvaPipelineStep(Output output) Model = output.PredictorModel; } - public Var Model { get; } + public Var Model { get; } } } } diff --git a/src/Microsoft.ML.Legacy/Models/TrainTestEvaluator.cs b/src/Microsoft.ML.Legacy/Models/TrainTestEvaluator.cs index e547040cb8..3837283e94 100644 --- a/src/Microsoft.ML.Legacy/Models/TrainTestEvaluator.cs +++ b/src/Microsoft.ML.Legacy/Models/TrainTestEvaluator.cs @@ -36,10 +36,10 @@ public TrainTestEvaluatorOutput TrainTestEvaluate loaders = new List(); - List> transformModels = new List>(); - Var lastTransformModel = null; + List> transformModels = new List>(); + Var lastTransformModel = null; Var firstPipelineDataStep = null; - Var firstModel = null; + Var firstModel = null; ILearningPipelineItem firstTransform = null; foreach (ILearningPipelineItem currentItem in pipeline) { @@ -65,13 +65,13 @@ public TrainTestEvaluatorOutput TrainTestEvaluate predictorModel; + Var predictorModel; if (transformModels.Count != 0) { var localModelInput = new Transforms.ManyHeterogeneousModelCombiner { PredictorModel = predictorDataStep.Model, - TransformModels = new ArrayVar(transformModels.ToArray()) + TransformModels = new ArrayVar(transformModels.ToArray()) }; var localModelOutput = subGraph.Add(localModelInput); predictorModel = localModelOutput.PredictorModel; @@ -99,7 +99,7 @@ public TrainTestEvaluatorOutput TrainTestEvaluate(transformModels.ToArray()) + Models = new ArrayVar(transformModels.ToArray()) }; var modelOutput = subGraph.Add(modelInput); @@ -157,7 +157,7 @@ public TrainTestEvaluatorOutput TrainTestEvaluate predictor; using (var memoryStream = new MemoryStream()) { diff --git a/src/Microsoft.ML.Legacy/PredictionModel.cs b/src/Microsoft.ML.Legacy/PredictionModel.cs index 1c1fcf97aa..d13980e3a7 100644 --- a/src/Microsoft.ML.Legacy/PredictionModel.cs +++ b/src/Microsoft.ML.Legacy/PredictionModel.cs @@ -21,7 +21,7 @@ internal PredictionModel(Stream stream) { _env = new MLContext(); AssemblyRegistration.RegisterAssemblies(_env); - PredictorModel = new TransformModel(_env, stream); + PredictorModel = new TransformModelImpl(_env, stream); } internal TransformModel PredictorModel { get; } diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationBinaryMacro.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationBinaryMacro.cs index d2e61d2db0..4dd8f08fca 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationBinaryMacro.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationBinaryMacro.cs @@ -31,7 +31,7 @@ public sealed class SubGraphInput public sealed class SubGraphOutput { [Argument(ArgumentType.Required, HelpText = "The model", SortOrder = 1)] - public Var Model; + public Var Model; } public sealed class Arguments @@ -72,7 +72,7 @@ public sealed class Arguments public sealed class Output { [TlcModule.Output(Desc = "The trained model", SortOrder = 1)] - public IPredictorModel[] PredictorModel; + public PredictorModel[] PredictorModel; [TlcModule.Output(Desc = "Warning dataset", SortOrder = 2)] public IDataView[] Warnings; @@ -105,7 +105,7 @@ public static CommonOutputs.MacroOutput CrossValidateBinary( var cvSplitOutput = exp.Add(cvSplit); subGraphNodes.AddRange(EntryPointNode.ValidateNodes(env, node.Context, exp.GetNodes())); - var predModelVars = new Var[input.NumFolds]; + var predModelVars = new Var[input.NumFolds]; var warningsVars = new Var[input.NumFolds]; var overallMetricsVars = new Var[input.NumFolds]; var instanceMetricsVars = new Var[input.NumFolds]; @@ -131,7 +131,7 @@ public static CommonOutputs.MacroOutput CrossValidateBinary( { VarName = mapping[input.Inputs.Data.VarName] }; - args.Outputs.Model = new Var + args.Outputs.Model = new Var { VarName = mapping[input.Outputs.Model.VarName] }; @@ -146,7 +146,7 @@ public static CommonOutputs.MacroOutput CrossValidateBinary( inputBindingMap.Add(nameof(args.TestingData), new List { testingData }); inputMap.Add(testingData, new ArrayIndexVariableBinding(cvSplitOutput.TestData.VarName, k)); var outputMap = new Dictionary(); - var predModelVar = new Var(); + var predModelVar = new Var(); outputMap.Add(nameof(TrainTestBinaryMacro.Output.PredictorModel), predModelVar.VarName); predModelVars[k] = predModelVar; var warningVar = new Var(); @@ -168,7 +168,7 @@ public static CommonOutputs.MacroOutput CrossValidateBinary( var outModels = new Legacy.Data.PredictorModelArrayConverter { - Model = new ArrayVar(predModelVars) + Model = new ArrayVar(predModelVars) }; var outModelsOutput = new Legacy.Data.PredictorModelArrayConverter.Output(); outModelsOutput.OutputModel.VarName = node.GetOutputVariableName(nameof(Output.PredictorModel)); @@ -214,39 +214,39 @@ public static CommonOutputs.MacroOutput CrossValidateBinary( public sealed class ArrayIPredictorModelInput { [Argument(ArgumentType.Required, HelpText = "The models", SortOrder = 1)] - public IPredictorModel[] Model; + public PredictorModel[] Model; } - public sealed class ArrayIPredictorModelOutput + public sealed class ArrayPredictorModelOutput { [TlcModule.Output(Desc = "The model array", SortOrder = 1)] - public IPredictorModel[] OutputModel; + public PredictorModel[] OutputModel; } - [TlcModule.EntryPoint(Desc = "Create an array variable of IPredictorModel", Name = "Data.PredictorModelArrayConverter")] - public static ArrayIPredictorModelOutput MakeArray(IHostEnvironment env, ArrayIPredictorModelInput input) + [TlcModule.EntryPoint(Desc = "Create an array variable of " + nameof(PredictorModel), Name = "Data.PredictorModelArrayConverter")] + public static ArrayPredictorModelOutput MakeArray(IHostEnvironment env, ArrayIPredictorModelInput input) { - var result = new ArrayIPredictorModelOutput + var result = new ArrayPredictorModelOutput { OutputModel = input.Model }; return result; } - public sealed class ArrayITransformModelInput + public sealed class ArrayTransformModelInput { [Argument(ArgumentType.Required, HelpText = "The models", SortOrder = 1)] - public ITransformModel[] TransformModel; + public TransformModel[] TransformModel; } public sealed class ArrayITransformModelOutput { [TlcModule.Output(Desc = "The model array", SortOrder = 1)] - public ITransformModel[] OutputModel; + public TransformModel[] OutputModel; } - [TlcModule.EntryPoint(Desc = "Create an array variable of ITransformModel", Name = "Data.TransformModelArrayConverter")] - public static ArrayITransformModelOutput MakeArray(IHostEnvironment env, ArrayITransformModelInput input) + [TlcModule.EntryPoint(Desc = "Create an array variable of " + nameof(TransformModel), Name = "Data.TransformModelArrayConverter")] + public static ArrayITransformModelOutput MakeArray(IHostEnvironment env, ArrayTransformModelInput input) { var result = new ArrayITransformModelOutput { @@ -267,7 +267,7 @@ public sealed class ArrayIDataViewOutput public IDataView[] OutputData; } - [TlcModule.EntryPoint(Desc = "Create an array variable of IDataView", Name = "Data.IDataViewArrayConverter")] + [TlcModule.EntryPoint(Desc = "Create an array variable of " + nameof(IDataView), Name = "Data.IDataViewArrayConverter")] public static ArrayIDataViewOutput MakeArray(IHostEnvironment env, ArrayIDataViewInput input) { var result = new ArrayIDataViewOutput diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationMacro.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationMacro.cs index 9522b8aaa5..e037cf5245 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationMacro.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/CrossValidationMacro.cs @@ -34,10 +34,10 @@ public sealed class SubGraphInput public sealed class SubGraphOutput { [Argument(ArgumentType.AtMostOnce, HelpText = "The predictor model", SortOrder = 1)] - public Var PredictorModel; + public Var PredictorModel; [Argument(ArgumentType.AtMostOnce, HelpText = "The transform model", SortOrder = 2)] - public Var TransformModel; + public Var TransformModel; } public sealed class Arguments @@ -51,7 +51,7 @@ public sealed class Arguments [TlcModule.OptionalInput] [Argument(ArgumentType.AtMostOnce, HelpText = "The transform model from the pipeline before this command. " + "It gets included in the Output.PredictorModel.", SortOrder = 2)] - public ITransformModel TransformModel; + public TransformModel TransformModel; // This is the subgraph that describes how to train a model for each fold. It should // accept one IDataView input and output one IPredictorModel output (see Inputs and Outputs). @@ -101,11 +101,11 @@ public sealed class Output { [TlcModule.Output(Desc = "The final model including the trained predictor model and the model from the transforms, " + "provided as the Input.TransformModel.", SortOrder = 1)] - public IPredictorModel[] PredictorModel; + public PredictorModel[] PredictorModel; [TlcModule.Output(Desc = "The final model including the trained predictor model and the model from the transforms, " + "provided as the Input.TransformModel.", SortOrder = 2)] - public ITransformModel[] TransformModel; + public TransformModel[] TransformModel; [TlcModule.Output(Desc = "Warning dataset", SortOrder = 3)] public IDataView Warnings; @@ -190,9 +190,9 @@ public static CommonOutputs.MacroOutput CrossValidate( var cvSplitOutput = exp.Add(cvSplit); subGraphNodes.AddRange(EntryPointNode.ValidateNodes(env, node.Context, exp.GetNodes())); - var predModelVars = new Var[input.NumFolds]; - var transformModelVars = new Var[input.NumFolds]; - var inputTransformModelVars = new Var[input.NumFolds]; + var predModelVars = new Var[input.NumFolds]; + var transformModelVars = new Var[input.NumFolds]; + var inputTransformModelVars = new Var[input.NumFolds]; var warningsVars = new Var[input.NumFolds]; var overallMetricsVars = new Var[input.NumFolds]; var instanceMetricsVars = new Var[input.NumFolds]; @@ -221,7 +221,7 @@ public static CommonOutputs.MacroOutput CrossValidate( }; if (transformModelVarName != null) - args.TransformModel = new Var { VarName = transformModelVarName.VariableName }; + args.TransformModel = new Var { VarName = transformModelVarName.VariableName }; args.Inputs.Data = new Var { @@ -230,7 +230,7 @@ public static CommonOutputs.MacroOutput CrossValidate( if (input.Outputs.PredictorModel != null && mapping.ContainsKey(input.Outputs.PredictorModel.VarName)) { - args.Outputs.PredictorModel = new Var + args.Outputs.PredictorModel = new Var { VarName = mapping[input.Outputs.PredictorModel.VarName] }; @@ -240,7 +240,7 @@ public static CommonOutputs.MacroOutput CrossValidate( if (input.Outputs.TransformModel != null && mapping.ContainsKey(input.Outputs.TransformModel.VarName)) { - args.Outputs.TransformModel = new Var + args.Outputs.TransformModel = new Var { VarName = mapping[input.Outputs.TransformModel.VarName] }; @@ -261,8 +261,8 @@ public static CommonOutputs.MacroOutput CrossValidate( inputBindingMap.Add(nameof(args.TestingData), new List { testingData }); inputMap.Add(testingData, new ArrayIndexVariableBinding(cvSplitOutput.TestData.VarName, k)); var outputMap = new Dictionary(); - var transformModelVar = new Var(); - var predModelVar = new Var(); + var transformModelVar = new Var(); + var predModelVar = new Var(); if (input.Outputs.PredictorModel == null) { outputMap.Add(nameof(TrainTestMacro.Output.TransformModel), transformModelVar.VarName); @@ -272,9 +272,9 @@ public static CommonOutputs.MacroOutput CrossValidate( { var modelCombine = new Legacy.Transforms.ModelCombiner { - Models = new ArrayVar( - new Var[] { - new Var { VarName = transformModelVarName.VariableName }, + Models = new ArrayVar( + new Var[] { + new Var { VarName = transformModelVarName.VariableName }, transformModelVar } ) }; @@ -329,7 +329,7 @@ public static CommonOutputs.MacroOutput CrossValidate( { var outModels = new Legacy.Data.TransformModelArrayConverter { - TransformModel = new ArrayVar(transformModelVars) + TransformModel = new ArrayVar(transformModelVars) }; var outModelsOutput = new Legacy.Data.TransformModelArrayConverter.Output(); outModelsOutput.OutputModel.VarName = node.GetOutputVariableName(nameof(Output.TransformModel)); @@ -339,7 +339,7 @@ public static CommonOutputs.MacroOutput CrossValidate( { var outModels = new Legacy.Data.PredictorModelArrayConverter { - Model = new ArrayVar(predModelVars) + Model = new ArrayVar(predModelVars) }; var outModelsOutput = new Legacy.Data.PredictorModelArrayConverter.Output(); outModelsOutput.OutputModel.VarName = node.GetOutputVariableName(nameof(Output.PredictorModel)); diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/FeatureCombiner.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/FeatureCombiner.cs index 6735cb43e6..179538e94e 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/FeatureCombiner.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/FeatureCombiner.cs @@ -80,7 +80,7 @@ public static CommonOutputs.TransformOutput PrepareFeatures(IHostEnvironment env new[] { new ColumnConcatenatingTransformer.TaggedColumn() { Name = nameFeat, Source = concatNames.ToArray() } } }, viewTrain); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, viewTrain, input.Data), OutputData = viewTrain }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, viewTrain, input.Data), OutputData = viewTrain }; } } @@ -239,7 +239,7 @@ public static CommonOutputs.TransformOutput PrepareClassificationLabel(IHostEnvi if (labelType.IsKey || labelType.IsBool) { var nop = NopTransform.CreateIfNeeded(env, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, nop, input.Data), OutputData = nop }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, nop, input.Data), OutputData = nop }; } var args = new ValueToKeyMappingTransformer.Arguments() @@ -256,7 +256,7 @@ public static CommonOutputs.TransformOutput PrepareClassificationLabel(IHostEnvi } }; var xf = ValueToKeyMappingTransformer.Create(host, args, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.PredictedLabelColumnOriginalValueConverter", Desc = "Transforms a predicted label column to its original values, unless it is of type bool.", UserName = "Convert Predicted Label")] @@ -274,11 +274,11 @@ public static CommonOutputs.TransformOutput ConvertPredictedLabel(IHostEnvironme if (predictedLabelType.IsNumber || predictedLabelType.IsBool) { var nop = NopTransform.CreateIfNeeded(env, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, nop, input.Data), OutputData = nop }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, nop, input.Data), OutputData = nop }; } var xf = new KeyToValueMappingTransformer(host, input.PredictedLabelColumn).Transform(input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.LabelToFloatConverter", Desc = "Transforms the label to float to make it suitable for regression.", UserName = "Prepare Regression Label")] @@ -296,7 +296,7 @@ public static CommonOutputs.TransformOutput PrepareRegressionLabel(IHostEnvironm if (labelType == NumberType.R4 || !labelType.IsNumber) { var nop = NopTransform.CreateIfNeeded(env, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, nop, input.Data), OutputData = nop }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, nop, input.Data), OutputData = nop }; } var args = new TypeConvertingTransformer.Arguments() @@ -312,7 +312,7 @@ public static CommonOutputs.TransformOutput PrepareRegressionLabel(IHostEnvironm } }; var xf = new TypeConvertingTransformer(host, new TypeConvertingTransformer.ColumnInfo(input.LabelColumn, input.LabelColumn, DataKind.R4)).Transform(input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/ExecuteGraphCommand.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/ExecuteGraphCommand.cs index 1f30644fc2..5c8cd4504e 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/ExecuteGraphCommand.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/ExecuteGraphCommand.cs @@ -115,15 +115,15 @@ public void SetInputFromPath(GraphRunner runner, string varName, string path, Tl runner.SetInput(varName, loader); break; case TlcModule.DataKind.PredictorModel: - PredictorModel pm; + PredictorModelImpl pm; using (var fs = File.OpenRead(path)) - pm = new PredictorModel(_host, fs); + pm = new PredictorModelImpl(_host, fs); runner.SetInput(varName, pm); break; case TlcModule.DataKind.TransformModel: - TransformModel tm; + TransformModelImpl tm; using (var fs = File.OpenRead(path)) - tm = new TransformModel(_host, fs); + tm = new TransformModelImpl(_host, fs); runner.SetInput(varName, tm); break; default: @@ -156,11 +156,11 @@ public void GetOutputToPath(GraphRunner runner, string varName, string path, Tlc } break; case TlcModule.DataKind.PredictorModel: - var pm = runner.GetOutput(varName); + var pm = runner.GetOutput(varName); SavePredictorModel(pm, path); break; case TlcModule.DataKind.TransformModel: - var tm = runner.GetOutput(varName); + var tm = runner.GetOutput(varName); using (var handle = _host.CreateOutputFile(path)) using (var fs = handle.CreateWriteStream()) tm.Save(_host, fs); @@ -168,17 +168,17 @@ public void GetOutputToPath(GraphRunner runner, string varName, string path, Tlc case TlcModule.DataKind.Array: string partialPath = path.Substring(0, path.Length - extension.Length); - var ipmArray = runner.GetOutputOrDefault(varName); + var ipmArray = runner.GetOutputOrDefault(varName); if (ipmArray != null && !ipmArray.GetType().IsValueType) { - SaveArrayToFile(ipmArray.ToList(), TlcModule.DataKind.PredictorModel, partialPath, extension); + SaveArrayToFile(ipmArray, partialPath, extension); break; } var idvArray = runner.GetOutputOrDefault(varName); if (idvArray != null && !idvArray.GetType().IsValueType) { - SaveArrayToFile(idvArray.ToList(), TlcModule.DataKind.DataView, partialPath, extension); + SaveArrayToFile(idvArray, partialPath, extension); break; } goto default; @@ -188,28 +188,28 @@ public void GetOutputToPath(GraphRunner runner, string varName, string path, Tlc } - private void SaveArrayToFile(List array, TlcModule.DataKind kind, string partialPath, string extension) - where T : class + private void SaveArrayToFile(PredictorModel[] array, string partialPath, string extension) { - for (int i = 0; i < array.Count; i++) + for (int i = 0; i < array.Length; i++) { string path = $"{partialPath}_{i}{extension}"; - switch (kind) - { - case TlcModule.DataKind.DataView: - SaveDataView((IDataView)array[i], path, extension); - break; - case TlcModule.DataKind.PredictorModel: - SavePredictorModel((IPredictorModel)array[i], path); - break; - } + SavePredictorModel(array[i], path); + } + } + + private void SaveArrayToFile(IDataView[] array, string partialPath, string extension) + { + for (int i = 0; i < array.Length; i++) + { + string path = $"{partialPath}_{i}{extension}"; + SaveDataView(array[i], path, extension); } } /// /// Saves the PredictorModel to the given path /// - private void SavePredictorModel(IPredictorModel pm, string path) + private void SavePredictorModel(PredictorModel pm, string path) { Contracts.CheckValue(pm, nameof(pm)); diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/JsonManifestUtils.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/JsonManifestUtils.cs index 2a5c20e3c9..d5f0f45a7f 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/JsonManifestUtils.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/JsonUtils/JsonManifestUtils.cs @@ -103,7 +103,7 @@ private static JObject BuildComponentManifest(IExceptionContext ectx, ComponentC return result; } - public static JObject BuildEntryPointManifest(IExceptionContext ectx, ComponentCatalog.EntryPointInfo entryPointInfo, ComponentCatalog catalog) + private static JObject BuildEntryPointManifest(IExceptionContext ectx, ComponentCatalog.EntryPointInfo entryPointInfo, ComponentCatalog catalog) { Contracts.CheckValueOrNull(ectx); ectx.CheckValue(entryPointInfo, nameof(entryPointInfo)); @@ -366,12 +366,6 @@ private static JToken BuildTypeToken(IExceptionContext ectx, FieldInfo fieldInfo jo[FieldNames.Kind] = typeEnum.ToString(); jo[FieldNames.ComponentKind] = kind; return jo; - case TlcModule.DataKind.State: - jo = new JObject(); - var typeString = $"{type}".Replace("Microsoft.ML.Runtime.Interfaces.", ""); - jo[FieldNames.Kind] = "C# Object"; - jo[FieldNames.ItemType] = typeString; - return jo; default: ectx.Assert(false); throw ectx.ExceptNotSupp(); diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/ModelOperations.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/ModelOperations.cs index f92cca99fc..7675a15925 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/ModelOperations.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/ModelOperations.cs @@ -19,43 +19,43 @@ public static class ModelOperations public sealed class CombineTransformModelsInput { [Argument(ArgumentType.Multiple, HelpText = "Input models", SortOrder = 1)] - public ITransformModel[] Models; + public TransformModel[] Models; } public sealed class CombineTransformModelsOutput { [TlcModule.Output(Desc = "Combined model", SortOrder = 1)] - public ITransformModel OutputModel; + public TransformModel OutputModel; } public sealed class PredictorModelInput { [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Transform model", SortOrder = 1)] - public ITransformModel[] TransformModels; + public TransformModel[] TransformModels; [Argument(ArgumentType.Required, HelpText = "Predictor model", SortOrder = 2)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } public sealed class SimplePredictorModelInput { [Argument(ArgumentType.Required, HelpText = "Transform model", SortOrder = 1)] - public ITransformModel TransformModel; + public TransformModel TransformModel; [Argument(ArgumentType.Required, HelpText = "Predictor model", SortOrder = 2)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } public sealed class PredictorModelOutput { [TlcModule.Output(Desc = "Predictor model", SortOrder = 1)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } public sealed class CombineOvaPredictorModelsInput : LearnerInputBaseWithWeight { [Argument(ArgumentType.Multiple, HelpText = "Input models", SortOrder = 1)] - public IPredictorModel[] ModelArray; + public PredictorModel[] ModelArray; [Argument(ArgumentType.AtMostOnce, HelpText = "Use probabilities from learners instead of raw values.", SortOrder = 2)] public bool UseProbabilities = true; @@ -64,13 +64,13 @@ public sealed class CombineOvaPredictorModelsInput : LearnerInputBaseWithWeight public sealed class CombinePredictorModelsInput { [Argument(ArgumentType.Multiple, HelpText = "Input models", SortOrder = 1)] - public IPredictorModel[] Models; + public PredictorModel[] Models; } public sealed class ApplyTransformModelInput : TransformInputBase { [Argument(ArgumentType.Required, HelpText = "Transform model", SortOrder = 2)] - public ITransformModel TransformModel; + public TransformModel TransformModel; } public sealed class ApplyTransformModelOutput @@ -88,7 +88,7 @@ public static CombineTransformModelsOutput CombineTransformModels(IHostEnvironme EntryPointUtils.CheckInputArgs(host, input); host.CheckNonEmpty(input.Models, nameof(input.Models)); - ITransformModel model = input.Models[input.Models.Length - 1]; + TransformModel model = input.Models[input.Models.Length - 1]; for (int i = input.Models.Length - 2; i >= 0; i--) model = model.Apply(env, input.Models[i]); @@ -104,7 +104,7 @@ public static PredictorModelOutput CombineModels(IHostEnvironment env, Predictor EntryPointUtils.CheckInputArgs(host, input); host.CheckNonEmpty(input.TransformModels, nameof(input.TransformModels)); - ITransformModel model = input.TransformModels[input.TransformModels.Length - 1]; + TransformModel model = input.TransformModels[input.TransformModels.Length - 1]; for (int i = input.TransformModels.Length - 2; i >= 0; i--) model = model.Apply(env, input.TransformModels[i]); return new PredictorModelOutput() { PredictorModel = input.PredictorModel.Apply(env, model) }; @@ -153,7 +153,7 @@ public static PredictorModelOutput CombineOvaModels(IHostEnvironment env, Combin return new PredictorModelOutput { - PredictorModel = new PredictorModel(env, data, input.TrainingData, + PredictorModel = new PredictorModelImpl(env, data, input.TrainingData, OvaPredictor.Create(host, input.UseProbabilities, input.ModelArray.Select(p => p.Predictor as IPredictorProducing).ToArray())) }; diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/OneVersusAllMacro.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/OneVersusAllMacro.cs index c4a4dcc88c..2456ab3a2f 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/OneVersusAllMacro.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/OneVersusAllMacro.cs @@ -26,7 +26,7 @@ public static class OneVersusAllMacro public sealed class SubGraphOutput { [Argument(ArgumentType.Required, HelpText = "The predictor model for the subgraph exemplar.", SortOrder = 1)] - public Var Model; + public Var Model; } public sealed class Arguments : LearnerInputBaseWithWeight @@ -46,10 +46,10 @@ public sealed class Arguments : LearnerInputBaseWithWeight public sealed class Output { [TlcModule.Output(Desc = "The trained multiclass model", SortOrder = 1)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; } - private static Tuple, Var> ProcessClass(IHostEnvironment env, int k, string label, Arguments input, EntryPointNode node) + private static Tuple, Var> ProcessClass(IHostEnvironment env, int k, string label, Arguments input, EntryPointNode node) { var macroNodes = new List(); @@ -80,7 +80,7 @@ private static Tuple, Var> ProcessClass(IH // Rename all the variables such that they don't conflict with the ones in the outer run context. var mapping = new Dictionary(); bool foundOutput = false; - Var predModelVar = null; + Var predModelVar = null; foreach (var entryPointNode in subGraphNodes) { // Rename variables in input/output maps, and in subgraph context. @@ -91,7 +91,7 @@ private static Tuple, Var> ProcessClass(IH // Grab a hold of output model from this subgraph. if (entryPointNode.GetOutputVariableName("PredictorModel") is string mvn) { - predModelVar = new Var { VarName = mvn }; + predModelVar = new Var { VarName = mvn }; foundOutput = true; } @@ -113,7 +113,7 @@ private static Tuple, Var> ProcessClass(IH // Add training subgraph to our context. macroNodes.AddRange(subGraphNodes); - return new Tuple, Var>(macroNodes, predModelVar); + return new Tuple, Var>(macroNodes, predModelVar); } private static int GetNumberOfClasses(IHostEnvironment env, Arguments input, out string label) @@ -151,7 +151,7 @@ public static CommonOutputs.MacroOutput OneVersusAll( env.Assert(input.Nodes.Count > 0); var numClasses = GetNumberOfClasses(env, input, out var label); - var predModelVars = new Var[numClasses]; + var predModelVars = new Var[numClasses]; // This will be the final resulting list of nodes that is returned from the macro. var macroNodes = new List(); @@ -170,7 +170,7 @@ public static CommonOutputs.MacroOutput OneVersusAll( var macroExperiment = new Experiment(env); var combinerNode = new Legacy.Models.OvaModelCombiner { - ModelArray = new ArrayVar(predModelVars), + ModelArray = new ArrayVar(predModelVars), TrainingData = new Var { VarName = node.GetInputVariable(nameof(input.TrainingData)).VariableName }, Caching = (Legacy.Models.CachingOptions)input.Caching, FeatureColumn = input.FeatureColumn, @@ -184,7 +184,7 @@ public static CommonOutputs.MacroOutput OneVersusAll( throw new Exception("Cannot find OVA model output."); // Map macro's output back to OVA combiner (so OVA combiner will set the value on our output variable). - var combinerOutput = new Legacy.Models.OvaModelCombiner.Output { PredictorModel = new Var { VarName = outVariableName } }; + var combinerOutput = new Legacy.Models.OvaModelCombiner.Output { PredictorModel = new Var { VarName = outVariableName } }; // Add to experiment (must be done AFTER we assign variable name to output). macroExperiment.Add(combinerNode, combinerOutput); diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestBinaryMacro.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestBinaryMacro.cs index d02f7f6b99..4fa88c85dc 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestBinaryMacro.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestBinaryMacro.cs @@ -27,7 +27,7 @@ public sealed class SubGraphInput public sealed class SubGraphOutput { [Argument(ArgumentType.Required, HelpText = "The model", SortOrder = 1)] - public Var Model; + public Var Model; } public sealed class Arguments @@ -53,7 +53,7 @@ public sealed class Arguments public sealed class Output { [TlcModule.Output(Desc = "The trained model", SortOrder = 1)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; [TlcModule.Output(Desc = "Warning dataset", SortOrder = 2)] public IDataView Warnings; diff --git a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestMacro.cs b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestMacro.cs index c61ea1d268..16571e7403 100644 --- a/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestMacro.cs +++ b/src/Microsoft.ML.Legacy/Runtime/EntryPoints/TrainTestMacro.cs @@ -27,10 +27,10 @@ public sealed class SubGraphInput public sealed class SubGraphOutput { [Argument(ArgumentType.AtMostOnce, HelpText = "The predictor model", SortOrder = 1)] - public Var PredictorModel; + public Var PredictorModel; [Argument(ArgumentType.AtMostOnce, HelpText = "Transform model", SortOrder = 2)] - public Var TransformModel; + public Var TransformModel; } public sealed class Arguments @@ -45,7 +45,7 @@ public sealed class Arguments [TlcModule.OptionalInput] [Argument(ArgumentType.AtMostOnce, HelpText = "The aggregated transform model from the pipeline before this command, to apply to the test data, and also include in the final model, together with the predictor model.", SortOrder = 3)] - public Var TransformModel = null; + public Var TransformModel = null; [Argument(ArgumentType.Required, HelpText = "The training subgraph", SortOrder = 4)] public JArray Nodes; @@ -82,11 +82,11 @@ public sealed class Output { [TlcModule.Output(Desc = "The final model including the trained predictor model and the model from the transforms, " + "provided as the Input.TransformModel.", SortOrder = 1)] - public IPredictorModel PredictorModel; + public PredictorModel PredictorModel; [TlcModule.Output(Desc = "The final model including the trained predictor model and the model from the transforms, " + "provided as the Input.TransformModel.", SortOrder = 2)] - public ITransformModel TransformModel; + public TransformModel TransformModel; [TlcModule.Output(Desc = "Warning dataset", SortOrder = 3)] public IDataView Warnings; @@ -174,10 +174,10 @@ public static CommonOutputs.MacroOutput TrainTest( { var modelCombine = new ML.Legacy.Transforms.ModelCombiner { - Models = new ArrayVar( - new Var[] { - new Var { VarName = transformModelVarName.VariableName }, - new Var { VarName = outputVarName} } + Models = new ArrayVar( + new Var[] { + new Var { VarName = transformModelVarName.VariableName }, + new Var { VarName = outputVarName} } ) }; diff --git a/src/Microsoft.ML.Legacy/Runtime/Experiment/Experiment.cs b/src/Microsoft.ML.Legacy/Runtime/Experiment/Experiment.cs index a51661630d..1069c7194b 100644 --- a/src/Microsoft.ML.Legacy/Runtime/Experiment/Experiment.cs +++ b/src/Microsoft.ML.Legacy/Runtime/Experiment/Experiment.cs @@ -306,12 +306,12 @@ public sealed class EntryPointTransformOutput : CommonOutputs.ITransformOutput /// /// Transform model /// - public Var Model { get; set; } + public Var Model { get; set; } public EntryPointTransformOutput() { OutputData = new Var(); - Model = new Var(); + Model = new Var(); } } @@ -320,11 +320,11 @@ public sealed class EntryPointTrainerOutput : CommonOutputs.ITrainerOutput /// /// The trained model /// - public Var PredictorModel { get; set; } + public Var PredictorModel { get; set; } public EntryPointTrainerOutput() { - PredictorModel = new Var(); + PredictorModel = new Var(); } } } diff --git a/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpApiGenerator.cs b/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpApiGenerator.cs index 668b3b4265..997d19ae7b 100644 --- a/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpApiGenerator.cs +++ b/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpApiGenerator.cs @@ -203,8 +203,6 @@ private void GenerateClasses(IndentedTextWriter writer, Type inputType, Componen if (type == typeof(CommonOutputs.IEvaluatorOutput)) continue; var typeEnum = TlcModule.GetDataType(type); - if (typeEnum == TlcModule.DataKind.State) - continue; if (typeEnum != TlcModule.DataKind.Unknown) continue; @@ -502,12 +500,12 @@ private static void GenerateApplyFunction(IndentedTextWriter writer, string clas writer.WriteLine("[Obsolete]"); writer.WriteLine("public Var Data { get; }"); writer.WriteLine("[Obsolete]"); - writer.WriteLine("public Var Model { get; }"); + writer.WriteLine("public Var Model { get; }"); } else { writer.WriteLine("[Obsolete]"); - writer.WriteLine("public Var Model { get; }"); + writer.WriteLine("public Var Model { get; }"); } writer.Outdent(); diff --git a/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpGeneratorUtils.cs b/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpGeneratorUtils.cs index 6903e4ebbc..58a496f2c7 100644 --- a/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpGeneratorUtils.cs +++ b/src/Microsoft.ML.Legacy/Runtime/Internal/Tools/CSharpGeneratorUtils.cs @@ -485,7 +485,7 @@ public static void GenerateLoaderAddInputMethod(IndentedTextWriter writer, strin writer.WriteLine("}"); writer.WriteLineNoTabs(); writer.WriteLine("public Var Data { get; }"); - writer.WriteLine("public Var Model { get; }"); + writer.WriteLine("public Var Model { get; }"); writer.Outdent(); writer.WriteLine("}"); } diff --git a/src/Microsoft.ML.LightGBM/LightGbmBinaryTrainer.cs b/src/Microsoft.ML.LightGBM/LightGbmBinaryTrainer.cs index 45d55f4bce..b6afe58b5b 100644 --- a/src/Microsoft.ML.LightGBM/LightGbmBinaryTrainer.cs +++ b/src/Microsoft.ML.LightGBM/LightGbmBinaryTrainer.cs @@ -137,7 +137,7 @@ private protected override IPredictorWithFeatureWeights CreatePredictor() return new FeatureWeightsCalibratedPredictor(Host, pred, cali); } - protected override void CheckDataValid(IChannel ch, RoleMappedData data) + private protected override void CheckDataValid(IChannel ch, RoleMappedData data) { Host.AssertValue(ch); base.CheckDataValid(ch, data); @@ -149,7 +149,7 @@ protected override void CheckDataValid(IChannel ch, RoleMappedData data) } } - protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) + private protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) { Options["objective"] = "binary"; // Add default metric. diff --git a/src/Microsoft.ML.LightGBM/LightGbmMulticlassTrainer.cs b/src/Microsoft.ML.LightGBM/LightGbmMulticlassTrainer.cs index 2216beadb7..68b5875bd3 100644 --- a/src/Microsoft.ML.LightGBM/LightGbmMulticlassTrainer.cs +++ b/src/Microsoft.ML.LightGBM/LightGbmMulticlassTrainer.cs @@ -105,7 +105,7 @@ private protected override OvaPredictor CreatePredictor() return OvaPredictor.Create(Host, predictors); } - protected override void CheckDataValid(IChannel ch, RoleMappedData data) + private protected override void CheckDataValid(IChannel ch, RoleMappedData data) { Host.AssertValue(ch); base.CheckDataValid(ch, data); @@ -117,7 +117,7 @@ protected override void CheckDataValid(IChannel ch, RoleMappedData data) } } - protected override void ConvertNaNLabels(IChannel ch, RoleMappedData data, float[] labels) + private protected override void ConvertNaNLabels(IChannel ch, RoleMappedData data, float[] labels) { // Only initialize one time. if (_numClass < 0) @@ -180,7 +180,7 @@ protected override void GetDefaultParameters(IChannel ch, int numRow, bool hasCa } } - protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) + private protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) { Host.AssertValue(ch); ch.Assert(PredictionKind == PredictionKind.MultiClassClassification); diff --git a/src/Microsoft.ML.LightGBM/LightGbmRankingTrainer.cs b/src/Microsoft.ML.LightGBM/LightGbmRankingTrainer.cs index bcc32d533c..2d27820592 100644 --- a/src/Microsoft.ML.LightGBM/LightGbmRankingTrainer.cs +++ b/src/Microsoft.ML.LightGBM/LightGbmRankingTrainer.cs @@ -118,7 +118,7 @@ public LightGbmRankingTrainer(IHostEnvironment env, Host.CheckNonEmpty(groupId, nameof(groupId)); } - protected override void CheckDataValid(IChannel ch, RoleMappedData data) + private protected override void CheckDataValid(IChannel ch, RoleMappedData data) { Host.AssertValue(ch); base.CheckDataValid(ch, data); @@ -158,7 +158,7 @@ private protected override LightGbmRankingModelParameters CreatePredictor() return new LightGbmRankingModelParameters(Host, TrainedEnsemble, FeatureCount, innerArgs); } - protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) + private protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) { Host.AssertValue(ch); Options["objective"] = "lambdarank"; diff --git a/src/Microsoft.ML.LightGBM/LightGbmRegressionTrainer.cs b/src/Microsoft.ML.LightGBM/LightGbmRegressionTrainer.cs index 9e3868bf96..f07baba4cb 100644 --- a/src/Microsoft.ML.LightGBM/LightGbmRegressionTrainer.cs +++ b/src/Microsoft.ML.LightGBM/LightGbmRegressionTrainer.cs @@ -127,7 +127,7 @@ private protected override LightGbmRegressionModelParameters CreatePredictor() return new LightGbmRegressionModelParameters(Host, TrainedEnsemble, FeatureCount, innerArgs); } - protected override void CheckDataValid(IChannel ch, RoleMappedData data) + private protected override void CheckDataValid(IChannel ch, RoleMappedData data) { Host.AssertValue(ch); base.CheckDataValid(ch, data); @@ -139,7 +139,7 @@ protected override void CheckDataValid(IChannel ch, RoleMappedData data) } } - protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) + private protected override void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups) { Options["objective"] = "regression"; // Add default metric. diff --git a/src/Microsoft.ML.LightGBM/LightGbmTrainerBase.cs b/src/Microsoft.ML.LightGBM/LightGbmTrainerBase.cs index 755dd32cff..28e12510d0 100644 --- a/src/Microsoft.ML.LightGBM/LightGbmTrainerBase.cs +++ b/src/Microsoft.ML.LightGBM/LightGbmTrainerBase.cs @@ -167,7 +167,7 @@ private void DisposeParallelTraining() LightGbmInterfaceUtils.Check(WrappedLightGbmInterface.NetworkFree()); } - protected virtual void CheckDataValid(IChannel ch, RoleMappedData data) + private protected virtual void CheckDataValid(IChannel ch, RoleMappedData data) { data.CheckFeatureFloatVector(); ch.CheckParam(data.Schema.Label != null, nameof(data), "Need a label column"); @@ -463,7 +463,7 @@ private void GetMetainfo(IChannel ch, FloatLabelCursor.Factory factory, /// /// Convert Nan labels. Default way is converting them to zero. /// - protected virtual void ConvertNaNLabels(IChannel ch, RoleMappedData data, float[] labels) + private protected virtual void ConvertNaNLabels(IChannel ch, RoleMappedData data, float[] labels) { for (int i = 0; i < labels.Length; ++i) { @@ -896,7 +896,7 @@ private static int GetNumSampleRow(int numRow, int numCol) /// /// This function will be called before training. It will check the label/group and add parameters for specific applications. /// - protected abstract void CheckAndUpdateParametersBeforeTraining(IChannel ch, + private protected abstract void CheckAndUpdateParametersBeforeTraining(IChannel ch, RoleMappedData data, float[] labels, int[] groups); } } diff --git a/src/Microsoft.ML.Onnx/SaveOnnxCommand.cs b/src/Microsoft.ML.Onnx/SaveOnnxCommand.cs index 3c3dd97dcd..1ed8730c1f 100644 --- a/src/Microsoft.ML.Onnx/SaveOnnxCommand.cs +++ b/src/Microsoft.ML.Onnx/SaveOnnxCommand.cs @@ -56,7 +56,7 @@ public sealed class Arguments : DataCommand.ArgumentsBase public bool? LoadPredictor; [Argument(ArgumentType.Required, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly, HelpText = "Model that needs to be converted to ONNX format.", SortOrder = 10)] - public ITransformModel Model; + public TransformModel Model; [Argument(ArgumentType.AtMostOnce, HelpText = "The targeted ONNX version. It can be either \"Stable\" or \"Experimental\". If \"Experimental\" is used, produced model can contain components that is not officially supported in ONNX standard.", SortOrder = 11)] public OnnxVersion OnnxVersion; @@ -69,7 +69,7 @@ public sealed class Arguments : DataCommand.ArgumentsBase private readonly bool? _loadPredictor; private readonly HashSet _inputsToDrop; private readonly HashSet _outputsToDrop; - private readonly ITransformModel _model; + private readonly TransformModel _model; private const string ProducerName = "ML.NET"; private const long ModelVersion = 0; diff --git a/src/Microsoft.ML.PCA/PcaTransform.cs b/src/Microsoft.ML.PCA/PcaTransform.cs index 90a613e844..6081f8ee54 100644 --- a/src/Microsoft.ML.PCA/PcaTransform.cs +++ b/src/Microsoft.ML.PCA/PcaTransform.cs @@ -654,7 +654,7 @@ public static CommonOutputs.TransformOutput Calculate(IHostEnvironment env, Argu var view = PcaTransform.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Recommender/MatrixFactorizationPredictor.cs b/src/Microsoft.ML.Recommender/MatrixFactorizationPredictor.cs index ae79e564cd..49a6d8241a 100644 --- a/src/Microsoft.ML.Recommender/MatrixFactorizationPredictor.cs +++ b/src/Microsoft.ML.Recommender/MatrixFactorizationPredictor.cs @@ -212,7 +212,7 @@ private ValueGetter GetGetter(ValueGetter matrixColumnIndexGetter, /// ratings from users to items, the mappers maps user ID and item ID to the rating of that /// item given by the user. /// - public ValueMapper GetMapper() + private ValueMapper GetMapper() { string msg = null; msg = "Invalid " + nameof(TMatrixColumnIndexIn) + " in GetMapper: " + typeof(TMatrixColumnIndexIn); diff --git a/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs b/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs index 85b9234856..987d63d237 100644 --- a/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs +++ b/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs @@ -661,7 +661,7 @@ private static bool ValidateMamlOutput(string filename, string[] rawLines, out L }; } - public static bool ParseCommandArguments(IHostEnvironment env, string commandline, out object commandArgs, out ComponentCatalog.LoadableClassInfo commandClass, bool trimExe = true) + private static bool ParseCommandArguments(IHostEnvironment env, string commandline, out object commandArgs, out ComponentCatalog.LoadableClassInfo commandClass, bool trimExe = true) { string args = commandline; if (trimExe) diff --git a/src/Microsoft.ML.StandardLearners/Standard/LinearModelParameters.cs b/src/Microsoft.ML.StandardLearners/Standard/LinearModelParameters.cs index 0b64f32ffb..7e380a2158 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LinearModelParameters.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LinearModelParameters.cs @@ -309,7 +309,7 @@ ValueMapper IValueMapper.GetMapper() /// /// Combine a bunch of models into one by averaging parameters /// - internal void CombineParameters(IList> models, out VBuffer weights, out float bias) + private protected void CombineParameters(IList> models, out VBuffer weights, out float bias) { Type type = GetType(); diff --git a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsPredictorBase.cs b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsPredictorBase.cs index 4c7fad0812..490a3cca9f 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsPredictorBase.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsPredictorBase.cs @@ -260,7 +260,7 @@ private static TArgs ArgsInit(string featureColumn, SchemaShape.Column labelColu protected virtual int ClassCount => 1; protected int BiasCount => ClassCount; protected int WeightCount => ClassCount * NumFeatures; - protected virtual Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Factory cursorFactory, + private protected virtual Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Factory cursorFactory, out VBuffer init, out ITerminationCriterion terminationCriterion) { // MeanRelativeImprovementCriterion: @@ -293,7 +293,7 @@ protected virtual Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Fa /// /// Initialize weights by running SGD up to specified tolerance. /// - protected virtual VBuffer InitializeWeightsSgd(IChannel ch, FloatLabelCursor.Factory cursorFactory) + private protected virtual VBuffer InitializeWeightsSgd(IChannel ch, FloatLabelCursor.Factory cursorFactory) { if (!Quiet) ch.Info("Running SGD initialization with tolerance {0}", SgdInitializationTolerance); @@ -367,7 +367,7 @@ protected virtual VBuffer InitializeWeightsSgd(IChannel ch, FloatLabelCur protected abstract VBuffer InitializeWeightsFromPredictor(TModel srcPredictor); - protected abstract void CheckLabel(RoleMappedData data); + private protected abstract void CheckLabel(RoleMappedData data); protected virtual void PreTrainingProcessInstance(float label, in VBuffer feat, float weight) { @@ -404,7 +404,7 @@ private protected override TModel TrainModelCore(TrainContext context) } } - protected virtual void TrainCore(IChannel ch, RoleMappedData data) + private protected virtual void TrainCore(IChannel ch, RoleMappedData data) { Host.AssertValue(ch); ch.AssertValue(data); @@ -578,7 +578,7 @@ protected void EnsureBiases(ref VBuffer vec) protected abstract float AccumulateOneGradient(in VBuffer feat, float label, float weight, in VBuffer xDense, ref VBuffer grad, ref float[] scratch); - protected abstract void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory cursorFactory, float loss, int numParams); + private protected abstract void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory cursorFactory, float loss, int numParams); protected abstract void ProcessPriorDistribution(float label, float weight); /// @@ -702,7 +702,7 @@ protected float DifferentiableFunctionComputeChunk(int ichk, in VBuffer x return (float)loss; } - protected float DifferentiableFunctionStream(FloatLabelCursor.Factory cursorFactory, in VBuffer xDense, ref VBuffer grad, IProgressChannel pch) + private protected float DifferentiableFunctionStream(FloatLabelCursor.Factory cursorFactory, in VBuffer xDense, ref VBuffer grad, IProgressChannel pch) { Contracts.AssertValue(cursorFactory); diff --git a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs index 37d79e87c6..6f8b74fab2 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs @@ -108,7 +108,7 @@ internal LogisticRegression(IHostEnvironment env, Arguments args) public override PredictionKind PredictionKind => PredictionKind.BinaryClassification; - protected override void CheckLabel(RoleMappedData data) + private protected override void CheckLabel(RoleMappedData data) { Contracts.AssertValue(data); data.CheckBinaryLabel(); @@ -160,7 +160,7 @@ protected override float AccumulateOneGradient(in VBuffer feat, float lab return weight * datumLoss; } - protected override void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory cursorFactory, float loss, int numParams) + private protected override void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory cursorFactory, float loss, int numParams) { Contracts.AssertValue(ch); Contracts.AssertValue(cursorFactory); @@ -367,7 +367,7 @@ protected override void ProcessPriorDistribution(float label, float weight) } //Override default termination criterion MeanRelativeImprovementCriterion with - protected override Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Factory cursorFactory, + private protected override Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Factory cursorFactory, out VBuffer init, out ITerminationCriterion terminationCriterion) { var opt = base.InitializeOptimizer(ch, cursorFactory, out init, out terminationCriterion); diff --git a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs index ca1ea84140..912e1747b1 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs @@ -114,7 +114,7 @@ internal MulticlassLogisticRegression(IHostEnvironment env, Arguments args) public override PredictionKind PredictionKind => PredictionKind.MultiClassClassification; - protected override void CheckLabel(RoleMappedData data) + private protected override void CheckLabel(RoleMappedData data) { Contracts.AssertValue(data); // REVIEW: For floating point labels, this will make a pass over the data. @@ -180,7 +180,7 @@ protected override void CheckLabel(RoleMappedData data) } //Override default termination criterion MeanRelativeImprovementCriterion with - protected override Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Factory cursorFactory, + private protected override Optimizer InitializeOptimizer(IChannel ch, FloatLabelCursor.Factory cursorFactory, out VBuffer init, out ITerminationCriterion terminationCriterion) { var opt = base.InitializeOptimizer(ch, cursorFactory, out init, out terminationCriterion); @@ -255,7 +255,7 @@ protected override MulticlassLogisticRegressionPredictor CreatePredictor() return new MulticlassLogisticRegressionPredictor(Host, in CurrentWeights, _numClasses, NumFeatures, _labelNames, _stats); } - protected override void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory cursorFactory, float loss, int numParams) + private protected override void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory cursorFactory, float loss, int numParams) { Contracts.AssertValue(ch); Contracts.AssertValue(cursorFactory); diff --git a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs index e7aeade4fe..09839c410d 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs @@ -90,7 +90,7 @@ private TScalarTrainer CreateTrainer() new LinearSvm(Host, new LinearSvm.Arguments()); } - protected IDataView MapLabelsCore(ColumnType type, InPredicate equalsTarget, RoleMappedData data) + private protected IDataView MapLabelsCore(ColumnType type, InPredicate equalsTarget, RoleMappedData data) { Host.AssertValue(type); Host.Assert(type.RawType == typeof(T)); @@ -114,7 +114,7 @@ protected IDataView MapLabelsCore(ColumnType type, InPredicate equalsTarge dst = equalsTarget(in src) ? 1 : default(float)); } - protected abstract TModel TrainCore(IChannel ch, RoleMappedData data, int count); + private protected abstract TModel TrainCore(IChannel ch, RoleMappedData data, int count); /// /// The legacy train method. diff --git a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Ova.cs b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Ova.cs index 398fce9015..0c06870dd6 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Ova.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Ova.cs @@ -103,7 +103,7 @@ public Ova(IHostEnvironment env, _args.UseProbabilities = useProbabilities; } - protected override OvaPredictor TrainCore(IChannel ch, RoleMappedData data, int count) + private protected override OvaPredictor TrainCore(IChannel ch, RoleMappedData data, int count) { // Train one-vs-all models. var predictors = new TScalarPredictor[count]; diff --git a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs index 902906c5da..dd8129284d 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/Pkpd.cs @@ -104,7 +104,7 @@ public Pkpd(IHostEnvironment env, Host.CheckValue(labelColumn, nameof(labelColumn), "Label column should not be null."); } - protected override PkpdPredictor TrainCore(IChannel ch, RoleMappedData data, int count) + private protected override PkpdPredictor TrainCore(IChannel ch, RoleMappedData data, int count) { // Train M * (M+1) / 2 models arranged as a lower triangular matrix. var predModels = new TDistPredictor[count][]; diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs index 6556a98dae..c4789895f8 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs @@ -155,7 +155,7 @@ protected override SchemaShape.Column[] GetOutputColumnsCore(SchemaShape inputSc }; } - protected override void CheckLabels(RoleMappedData data) + private protected override void CheckLabels(RoleMappedData data) { Contracts.AssertValue(data); data.CheckBinaryLabel(); diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs index 716f78d298..ac804fde2a 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs @@ -268,7 +268,7 @@ protected override SchemaShape.Column[] GetOutputColumnsCore(SchemaShape inputSc }; } - protected override void CheckLabels(RoleMappedData data) + private protected override void CheckLabels(RoleMappedData data) { Contracts.AssertValue(data); data.CheckBinaryLabel(); diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs index 70a53f6d49..c2d6baec9f 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs @@ -153,7 +153,7 @@ protected override SchemaShape.Column[] GetOutputColumnsCore(SchemaShape inputSc }; } - protected override void CheckLabels(RoleMappedData data) + private protected override void CheckLabels(RoleMappedData data) { data.CheckRegressionLabel(); } diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLinear.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLinear.cs index dcdeeac236..78341717d6 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLinear.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLinear.cs @@ -279,7 +279,7 @@ private protected sealed override TModel TrainModelCore(TrainContext context) } } - protected abstract void CheckLabels(RoleMappedData data); + private protected abstract void CheckLabels(RoleMappedData data); private void TrainCore(IChannel ch, RoleMappedData data, TrainStateBase state) { diff --git a/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs index 70956bdc71..3c56292c47 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs @@ -81,7 +81,7 @@ internal PoissonRegression(IHostEnvironment env, Arguments args) public override PredictionKind PredictionKind => PredictionKind.Regression; - protected override void CheckLabel(RoleMappedData data) + private protected override void CheckLabel(RoleMappedData data) { Contracts.AssertValue(data); data.CheckRegressionLabel(); @@ -162,7 +162,7 @@ protected override PoissonRegressionModelParameters CreatePredictor() return new PoissonRegressionModelParameters(Host, in weights, bias); } - protected override void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory factory, float loss, int numParams) + private protected override void ComputeTrainingStatistics(IChannel ch, FloatLabelCursor.Factory factory, float loss, int numParams) { // No-op by design. } diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs index a286d63994..4d10d0f702 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs @@ -84,7 +84,7 @@ private protected override TModel TrainModelCore(TrainContext context) } } - protected abstract TModel TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount); + private protected abstract TModel TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount); /// /// This method ensures that the data meets the requirements of this trainer and its @@ -95,7 +95,7 @@ private protected override TModel TrainModelCore(TrainContext context) /// Gets the length of weights and bias array. For binary classification and regression, /// this is 1. For multi-class classification, this equals the number of classes on the label. /// A potentially modified version of - protected RoleMappedData PrepareDataFromTrainingExamples(IChannel ch, RoleMappedData examples, out int weightSetCount) + private protected RoleMappedData PrepareDataFromTrainingExamples(IChannel ch, RoleMappedData examples, out int weightSetCount) { ch.AssertValue(examples); CheckLabel(examples, out weightSetCount); @@ -129,7 +129,7 @@ protected RoleMappedData PrepareDataFromTrainingExamples(IChannel ch, RoleMapped return examplesToFeedTrain; } - protected abstract void CheckLabel(RoleMappedData examples, out int weightSetCount); + private protected abstract void CheckLabel(RoleMappedData examples, out int weightSetCount); protected float WDot(in VBuffer features, in VBuffer weights, float bias) { @@ -141,7 +141,7 @@ protected float WScaledDot(in VBuffer features, Double scaling, in VBuffe return VectorUtils.DotProduct(in weights, in features) * (float)scaling + bias; } - protected virtual int ComputeNumThreads(FloatLabelCursor.Factory cursorFactory) + private protected virtual int ComputeNumThreads(FloatLabelCursor.Factory cursorFactory) { int maxThreads = Math.Min(8, Math.Max(1, Environment.ProcessorCount / 2)); if (0 < Host.ConcurrencyFactor && Host.ConcurrencyFactor < maxThreads) @@ -281,7 +281,7 @@ protected float WDot(in VBuffer features, in VBuffer weights, floa return VectorUtils.DotProduct(in weights, in features) + bias; } - protected sealed override TModel TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount) + private protected sealed override TModel TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount) { Contracts.Assert(predictor == null, "SDCA based trainers don't support continuous training."); Contracts.Assert(weightSetCount >= 1); @@ -748,7 +748,7 @@ private void InitializeConvergenceMetrics(out string[] names, out Double[] initi /// The array holding the pre-computed squared L2-norm of features for each training example. It may be null. It is always null for /// binary classification and regression because this quantity is not needed. /// - protected virtual void TrainWithoutLock(IProgressChannelProvider progress, FloatLabelCursor.Factory cursorFactory, Random rand, + private protected virtual void TrainWithoutLock(IProgressChannelProvider progress, FloatLabelCursor.Factory cursorFactory, Random rand, IdToIdxLookup idToIdx, int numThreads, DualsTableBase duals, float[] biasReg, float[] invariants, float lambdaNInv, VBuffer[] weights, float[] biasUnreg, VBuffer[] l1IntermediateWeights, float[] l1IntermediateBias, float[] featureNormSquared) { @@ -902,7 +902,7 @@ protected virtual void TrainWithoutLock(IProgressChannelProvider progress, Float /// /// The iteration number when the best model is obtained. /// Whether the optimization has converged. - protected virtual bool CheckConvergence( + private protected virtual bool CheckConvergence( IProgressChannel pch, int iter, FloatLabelCursor.Factory cursorFactory, @@ -992,15 +992,15 @@ protected virtual float[] InitializeFeatureNormSquared(int length) return null; } - protected abstract float GetInstanceWeight(FloatLabelCursor cursor); + private protected abstract float GetInstanceWeight(FloatLabelCursor cursor); - protected delegate void Visitor(long index, ref float value); + private protected delegate void Visitor(long index, ref float value); /// /// Encapsulates the common functionality of storing and /// retrieving the dual variables. /// - protected abstract class DualsTableBase + private protected abstract class DualsTableBase { public abstract float this[long index] { get; set; } public abstract long Length { get; } @@ -1566,12 +1566,12 @@ protected override TScalarPredictor CreatePredictor(VBuffer[] weights, fl return new ParameterMixingCalibratedPredictor(Host, predictor, new PlattCalibrator(Host, -1, 0)); } - protected override float GetInstanceWeight(FloatLabelCursor cursor) + private protected override float GetInstanceWeight(FloatLabelCursor cursor) { return cursor.Label > 0 ? cursor.Weight * _positiveInstanceWeight : cursor.Weight; } - protected override void CheckLabel(RoleMappedData examples, out int weightSetCount) + private protected override void CheckLabel(RoleMappedData examples, out int weightSetCount) { examples.CheckBinaryLabel(); weightSetCount = 1; @@ -1748,7 +1748,7 @@ public BinaryPredictionTransformer Train(IDataView trainData, //For complexity analysis, we assume that // - The number of features is N // - Average number of non-zero per instance is k - protected override TScalarPredictor TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount) + private protected override TScalarPredictor TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount) { Contracts.AssertValue(data); Contracts.Assert(weightSetCount == 1); @@ -1931,7 +1931,7 @@ protected override TScalarPredictor TrainCore(IChannel ch, RoleMappedData data, return new ParameterMixingCalibratedPredictor(Host, pred, new PlattCalibrator(Host, -1, 0)); } - protected override void CheckLabel(RoleMappedData examples, out int weightSetCount) + private protected override void CheckLabel(RoleMappedData examples, out int weightSetCount) { examples.CheckBinaryLabel(); weightSetCount = 1; diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs index 659b567843..e7a9a6fe7b 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs @@ -124,7 +124,7 @@ protected override void CheckLabelCompatible(SchemaShape.Column labelCol) } /// - protected override void TrainWithoutLock(IProgressChannelProvider progress, FloatLabelCursor.Factory cursorFactory, Random rand, + private protected override void TrainWithoutLock(IProgressChannelProvider progress, FloatLabelCursor.Factory cursorFactory, Random rand, IdToIdxLookup idToIdx, int numThreads, DualsTableBase duals, Float[] biasReg, Float[] invariants, Float lambdaNInv, VBuffer[] weights, Float[] biasUnreg, VBuffer[] l1IntermediateWeights, Float[] l1IntermediateBias, Float[] featureNormSquared) { @@ -289,7 +289,7 @@ protected override void TrainWithoutLock(IProgressChannelProvider progress, Floa } /// - protected override bool CheckConvergence( + private protected override bool CheckConvergence( IProgressChannel pch, int iter, FloatLabelCursor.Factory cursorFactory, @@ -425,7 +425,7 @@ protected override MulticlassLogisticRegressionPredictor CreatePredictor(VBuffer return new MulticlassLogisticRegressionPredictor(Host, weights, bias, bias.Length, weights[0].Length, null, stats: null); } - protected override void CheckLabel(RoleMappedData examples, out int weightSetCount) + private protected override void CheckLabel(RoleMappedData examples, out int weightSetCount) { examples.CheckMultiClassLabel(out weightSetCount); } @@ -436,7 +436,7 @@ protected override Float[] InitializeFeatureNormSquared(int length) return new Float[length]; } - protected override Float GetInstanceWeight(FloatLabelCursor cursor) + private protected override Float GetInstanceWeight(FloatLabelCursor cursor) { return cursor.Weight; } diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs index 0a50df7c31..0eec9f2588 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs @@ -113,19 +113,19 @@ protected override LinearRegressionModelParameters CreatePredictor(VBuffer PredictionKind.BinaryClassification; private readonly ColumnType _inputType; ColumnType IValueMapper.InputType => _inputType; diff --git a/src/Microsoft.ML.StandardLearners/Standard/StochasticTrainerBase.cs b/src/Microsoft.ML.StandardLearners/Standard/StochasticTrainerBase.cs index bb4a2965d9..d27ce8791c 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/StochasticTrainerBase.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/StochasticTrainerBase.cs @@ -43,7 +43,7 @@ private protected override TModel TrainModelCore(TrainContext context) } } - protected virtual int ComputeNumThreads(FloatLabelCursor.Factory cursorFactory) + private protected virtual int ComputeNumThreads(FloatLabelCursor.Factory cursorFactory) { int maxThreads = Math.Min(8, Math.Max(1, Environment.ProcessorCount / 2)); if (0 < Host.ConcurrencyFactor && Host.ConcurrencyFactor < maxThreads) @@ -61,7 +61,7 @@ protected virtual int ComputeNumThreads(FloatLabelCursor.Factory cursorFactory) /// Gets the length of weights and bias array. For binary classification and regression, /// this is 1. For multi-class classification, this equals the number of classes on the label. /// A potentially modified version of - protected RoleMappedData PrepareDataFromTrainingExamples(IChannel ch, RoleMappedData examples, out int weightSetCount) + private protected RoleMappedData PrepareDataFromTrainingExamples(IChannel ch, RoleMappedData examples, out int weightSetCount) { ch.AssertValue(examples); CheckLabel(examples, out weightSetCount); @@ -95,8 +95,8 @@ protected RoleMappedData PrepareDataFromTrainingExamples(IChannel ch, RoleMapped return examplesToFeedTrain; } - protected abstract TModel TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount); + private protected abstract TModel TrainCore(IChannel ch, RoleMappedData data, LinearModelParameters predictor, int weightSetCount); - protected abstract void CheckLabel(RoleMappedData examples, out int weightSetCount); + private protected abstract void CheckLabel(RoleMappedData examples, out int weightSetCount); } } diff --git a/src/Microsoft.ML.TensorFlow/TensorflowTransform.cs b/src/Microsoft.ML.TensorFlow/TensorflowTransform.cs index f555545099..b4d9bd0993 100644 --- a/src/Microsoft.ML.TensorFlow/TensorflowTransform.cs +++ b/src/Microsoft.ML.TensorFlow/TensorflowTransform.cs @@ -943,7 +943,7 @@ public static CommonOutputs.TransformOutput TensorFlowScorer(IHostEnvironment en var view = Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.TimeSeries/TimeSeriesProcessing.cs b/src/Microsoft.ML.TimeSeries/TimeSeriesProcessing.cs index 65c7346d55..a03243857d 100644 --- a/src/Microsoft.ML.TimeSeries/TimeSeriesProcessing.cs +++ b/src/Microsoft.ML.TimeSeries/TimeSeriesProcessing.cs @@ -21,7 +21,7 @@ public static CommonOutputs.TransformOutput ExponentialAverage(IHostEnvironment var xf = new ExponentialAverageTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -33,7 +33,7 @@ public static CommonOutputs.TransformOutput IidChangePointDetector(IHostEnvironm var view = new IidChangePointEstimator(h, input).Fit(input.Data).Transform(input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -45,7 +45,7 @@ public static CommonOutputs.TransformOutput IidSpikeDetector(IHostEnvironment en var view = new IidSpikeEstimator(h, input).Fit(input.Data).Transform(input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -57,7 +57,7 @@ public static CommonOutputs.TransformOutput PercentileThresholdTransform(IHostEn var view = new PercentileThresholdTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -69,7 +69,7 @@ public static CommonOutputs.TransformOutput PValueTransform(IHostEnvironment env var view = new PValueTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -81,7 +81,7 @@ public static CommonOutputs.TransformOutput SlidingWindowTransform(IHostEnvironm var view = new SlidingWindowTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -93,7 +93,7 @@ public static CommonOutputs.TransformOutput SsaChangePointDetector(IHostEnvironm var view = new SsaChangePointEstimator(h, input).Fit(input.Data).Transform(input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -105,7 +105,7 @@ public static CommonOutputs.TransformOutput SsaSpikeDetector(IHostEnvironment en var view = new SsaSpikeEstimator(h, input).Fit(input.Data).Transform(input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Transforms/BootstrapSamplingTransformer.cs b/src/Microsoft.ML.Transforms/BootstrapSamplingTransformer.cs index a1f12acb23..ecb3bed6fe 100644 --- a/src/Microsoft.ML.Transforms/BootstrapSamplingTransformer.cs +++ b/src/Microsoft.ML.Transforms/BootstrapSamplingTransformer.cs @@ -248,7 +248,7 @@ public static CommonOutputs.TransformOutput GetSample(IHostEnvironment env, Boot var view = new BootstrapSamplingTransformer(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Transforms/EntryPoints/SelectFeatures.cs b/src/Microsoft.ML.Transforms/EntryPoints/SelectFeatures.cs index 4edf7cd840..f7ccab8fc5 100644 --- a/src/Microsoft.ML.Transforms/EntryPoints/SelectFeatures.cs +++ b/src/Microsoft.ML.Transforms/EntryPoints/SelectFeatures.cs @@ -26,7 +26,7 @@ public static CommonOutputs.TransformOutput CountSelect(IHostEnvironment env, Co EntryPointUtils.CheckInputArgs(host, input); var xf = CountFeatureSelectingEstimator.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.FeatureSelectorByMutualInformation", @@ -43,7 +43,7 @@ public static CommonOutputs.TransformOutput MutualInformationSelect(IHostEnviron EntryPointUtils.CheckInputArgs(host, input); var xf = MutualInformationFeatureSelectingEstimator.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } diff --git a/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs b/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs index a6a3b42344..4dac234ab9 100644 --- a/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs +++ b/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs @@ -29,7 +29,7 @@ public static CommonOutputs.TransformOutput TextTransform(IHostEnvironment env, var xf = TextFeaturizingEstimator.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -46,7 +46,7 @@ public static CommonOutputs.TransformOutput DelimitedTokenizeTransform(IHostEnvi var xf = ML.Transforms.Text.WordTokenizingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -62,7 +62,7 @@ public static CommonOutputs.TransformOutput NGramTransform(IHostEnvironment env, var xf = NgramExtractingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -77,7 +77,7 @@ public static CommonOutputs.TransformOutput TermTransform(IHostEnvironment env, var xf = ValueToKeyMappingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -94,7 +94,7 @@ public static CommonOutputs.TransformOutput AnalyzeSentiment(IHostEnvironment en var view = SentimentAnalyzingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -113,7 +113,7 @@ public static CommonOutputs.TransformOutput CharTokenize(IHostEnvironment env, T var view = TokenizingByCharactersTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -136,7 +136,7 @@ public static CommonOutputs.TransformOutput LightLda(IHostEnvironment env, Laten return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } @@ -156,7 +156,7 @@ public static CommonOutputs.TransformOutput WordEmbeddings(IHostEnvironment env, var view = WordEmbeddingsExtractingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Transforms/GcnTransform.cs b/src/Microsoft.ML.Transforms/GcnTransform.cs index b203fc9dd7..9410535b5f 100644 --- a/src/Microsoft.ML.Transforms/GcnTransform.cs +++ b/src/Microsoft.ML.Transforms/GcnTransform.cs @@ -720,7 +720,7 @@ public static CommonOutputs.TransformOutput Normalize(IHostEnvironment env, LpNo var xf = LpNormalizingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -736,7 +736,7 @@ public static CommonOutputs.TransformOutput GcNormalize(IHostEnvironment env, Lp var xf = LpNormalizingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } diff --git a/src/Microsoft.ML.Transforms/GroupTransform.cs b/src/Microsoft.ML.Transforms/GroupTransform.cs index 612b08cfe9..64e09e8043 100644 --- a/src/Microsoft.ML.Transforms/GroupTransform.cs +++ b/src/Microsoft.ML.Transforms/GroupTransform.cs @@ -709,7 +709,7 @@ public static CommonOutputs.TransformOutput Group(IHostEnvironment env, GroupTra var view = new GroupTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Transforms/HashJoiningTransform.cs b/src/Microsoft.ML.Transforms/HashJoiningTransform.cs index e8ce9c1c15..e79782b427 100644 --- a/src/Microsoft.ML.Transforms/HashJoiningTransform.cs +++ b/src/Microsoft.ML.Transforms/HashJoiningTransform.cs @@ -713,7 +713,7 @@ public static CommonOutputs.TransformOutput Apply(IHostEnvironment env, HashJoin var view = new HashJoiningTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/src/Microsoft.ML.Transforms/NAHandling.cs b/src/Microsoft.ML.Transforms/NAHandling.cs index e5809adf68..c2c234abb5 100644 --- a/src/Microsoft.ML.Transforms/NAHandling.cs +++ b/src/Microsoft.ML.Transforms/NAHandling.cs @@ -24,7 +24,7 @@ public static CommonOutputs.TransformOutput Drop(IHostEnvironment env, MissingVa var xf = MissingValueDroppingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -41,7 +41,7 @@ public static CommonOutputs.TransformOutput Filter(IHostEnvironment env, NAFilte var xf = new NAFilter(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -58,7 +58,7 @@ public static CommonOutputs.TransformOutput Handle(IHostEnvironment env, Missing var xf = MissingValueHandlingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -75,7 +75,7 @@ public static CommonOutputs.TransformOutput Indicator(IHostEnvironment env, Miss var xf = new MissingValueIndicatorTransformer(h, input).Transform(input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } @@ -92,7 +92,7 @@ public static CommonOutputs.TransformOutput Replace(IHostEnvironment env, Missin var xf = MissingValueReplacingTransformer.Create(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } diff --git a/src/Microsoft.ML.Transforms/OneHotEncoding.cs b/src/Microsoft.ML.Transforms/OneHotEncoding.cs index 1a617c63e4..7e357259d4 100644 --- a/src/Microsoft.ML.Transforms/OneHotEncoding.cs +++ b/src/Microsoft.ML.Transforms/OneHotEncoding.cs @@ -293,7 +293,7 @@ public static CommonOutputs.TransformOutput CatTransformDict(IHostEnvironment en EntryPointUtils.CheckInputArgs(host, input); var xf = OneHotEncodingTransformer.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.CategoricalHashOneHotVectorizer", @@ -309,7 +309,7 @@ public static CommonOutputs.TransformOutput CatTransformHash(IHostEnvironment en EntryPointUtils.CheckInputArgs(host, input); var xf = OneHotHashEncoding.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.TextToKeyConverter", @@ -325,7 +325,7 @@ public static CommonOutputs.TransformOutput TextToKey(IHostEnvironment env, Valu EntryPointUtils.CheckInputArgs(host, input); var xf = ValueToKeyMappingTransformer.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } [TlcModule.EntryPoint(Name = "Transforms.KeyToTextConverter", @@ -340,7 +340,7 @@ public static CommonOutputs.TransformOutput KeyToText(IHostEnvironment env, KeyT EntryPointUtils.CheckInputArgs(host, input); var xf = KeyToValueMappingTransformer.Create(host, input, input.Data); - return new CommonOutputs.TransformOutput { Model = new TransformModel(env, xf, input.Data), OutputData = xf }; + return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf }; } } } diff --git a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs index 8c215dcb07..06e793c6ba 100644 --- a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs +++ b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs @@ -487,7 +487,7 @@ public static CommonOutputs.TransformOutput MakeOptional(IHostEnvironment env, A var xf = new OptionalColumnTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, xf, input.Data), + Model = new TransformModelImpl(h, xf, input.Data), OutputData = xf }; } diff --git a/src/Microsoft.ML.Transforms/UngroupTransform.cs b/src/Microsoft.ML.Transforms/UngroupTransform.cs index 72dc32c128..b34a0ad63b 100644 --- a/src/Microsoft.ML.Transforms/UngroupTransform.cs +++ b/src/Microsoft.ML.Transforms/UngroupTransform.cs @@ -670,7 +670,7 @@ public static CommonOutputs.TransformOutput Ungroup(IHostEnvironment env, Ungrou var view = new UngroupTransform(h, input, input.Data); return new CommonOutputs.TransformOutput() { - Model = new TransformModel(h, view, input.Data), + Model = new TransformModelImpl(h, view, input.Data), OutputData = view }; } diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index d1f3bf4a52..2d1f4e4cf9 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -1,9 +1,9 @@ Data.CustomTextLoader Import a dataset from a text file Microsoft.ML.Runtime.EntryPoints.ImportTextData ImportText Microsoft.ML.Runtime.EntryPoints.ImportTextData+Input Microsoft.ML.Runtime.EntryPoints.ImportTextData+Output Data.DataViewReference Pass dataview from memory to experiment Microsoft.ML.Runtime.EntryPoints.DataViewReference ImportData Microsoft.ML.Runtime.EntryPoints.DataViewReference+Input Microsoft.ML.Runtime.EntryPoints.DataViewReference+Output Data.IDataViewArrayConverter Create an array variable of IDataView Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro MakeArray Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayIDataViewInput Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayIDataViewOutput -Data.PredictorModelArrayConverter Create an array variable of IPredictorModel Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro MakeArray Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayIPredictorModelInput Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayIPredictorModelOutput +Data.PredictorModelArrayConverter Create an array variable of PredictorModel Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro MakeArray Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayIPredictorModelInput Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayPredictorModelOutput Data.TextLoader Import a dataset from a text file Microsoft.ML.Runtime.EntryPoints.ImportTextData TextLoader Microsoft.ML.Runtime.EntryPoints.ImportTextData+LoaderInput Microsoft.ML.Runtime.EntryPoints.ImportTextData+Output -Data.TransformModelArrayConverter Create an array variable of ITransformModel Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro MakeArray Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayITransformModelInput Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayITransformModelOutput +Data.TransformModelArrayConverter Create an array variable of TransformModel Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro MakeArray Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayTransformModelInput Microsoft.ML.Runtime.EntryPoints.CrossValidationBinaryMacro+ArrayITransformModelOutput Models.AnomalyDetectionEvaluator Evaluates an anomaly detection scored dataset. Microsoft.ML.Runtime.Data.Evaluate AnomalyDetection Microsoft.ML.Runtime.Data.AnomalyDetectionMamlEvaluator+Arguments Microsoft.ML.Runtime.EntryPoints.CommonOutputs+CommonEvaluateOutput Models.AnomalyPipelineEnsemble Combine anomaly detection models into an ensemble Microsoft.ML.Runtime.EntryPoints.EnsembleCreator CreateAnomalyPipelineEnsemble Microsoft.ML.Runtime.EntryPoints.EnsembleCreator+PipelineAnomalyInput Microsoft.ML.Runtime.EntryPoints.CommonOutputs+AnomalyDetectionOutput Models.BinaryClassificationEvaluator Evaluates a binary classification scored dataset. Microsoft.ML.Runtime.Data.Evaluate Binary Microsoft.ML.Runtime.Data.BinaryClassifierMamlEvaluator+Arguments Microsoft.ML.Runtime.EntryPoints.CommonOutputs+ClassificationEvaluateOutput diff --git a/test/BaselineOutput/Common/EntryPoints/core_manifest.json b/test/BaselineOutput/Common/EntryPoints/core_manifest.json index e76f410d5e..8f4484992a 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_manifest.json +++ b/test/BaselineOutput/Common/EntryPoints/core_manifest.json @@ -92,7 +92,7 @@ }, { "Name": "Data.PredictorModelArrayConverter", - "Desc": "Create an array variable of IPredictorModel", + "Desc": "Create an array variable of PredictorModel", "FriendlyName": null, "ShortName": null, "Inputs": [ @@ -471,7 +471,7 @@ }, { "Name": "Data.TransformModelArrayConverter", - "Desc": "Create an array variable of ITransformModel", + "Desc": "Create an array variable of TransformModel", "FriendlyName": null, "ShortName": null, "Inputs": [ diff --git a/test/Microsoft.ML.Benchmarks/Helpers/EnvironmentFactory.cs b/test/Microsoft.ML.Benchmarks/Helpers/EnvironmentFactory.cs index 3b0b055d30..20582c108d 100644 --- a/test/Microsoft.ML.Benchmarks/Helpers/EnvironmentFactory.cs +++ b/test/Microsoft.ML.Benchmarks/Helpers/EnvironmentFactory.cs @@ -28,7 +28,6 @@ internal static MLContext CreateClassificationEnvironment() - where TEvaluator : IEvaluator where TLoader : IDataReader where TTransformer : ITransformer where TTrainer : ITrainerEstimator, IPredictor> diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestCSharpApi.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestCSharpApi.cs index f5d9006800..b1f35eb0ac 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestCSharpApi.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestCSharpApi.cs @@ -147,7 +147,7 @@ public void TestTrainTestMacro() var modelCombine = new Legacy.Transforms.ManyHeterogeneousModelCombiner { - TransformModels = new ArrayVar(catOutput.Model, concatOutput.Model), + TransformModels = new ArrayVar(catOutput.Model, concatOutput.Model), PredictorModel = sdcaOutput.PredictorModel }; var modelCombineOutput = subGraph.Add(modelCombine); @@ -215,7 +215,7 @@ public void TestCrossValidationBinaryMacro() var modelCombine = new Legacy.Transforms.ManyHeterogeneousModelCombiner { - TransformModels = new ArrayVar(catOutput.Model, concatOutput.Model), + TransformModels = new ArrayVar(catOutput.Model, concatOutput.Model), PredictorModel = lrOutput.PredictorModel }; var modelCombineOutput = subGraph.Add(modelCombine); @@ -280,7 +280,7 @@ public void TestCrossValidationMacro() var modelCombine = new Legacy.Transforms.ManyHeterogeneousModelCombiner { - TransformModels = new ArrayVar(nopOutput.Model, generateOutput.Model), + TransformModels = new ArrayVar(nopOutput.Model, generateOutput.Model), PredictorModel = learnerOutput.PredictorModel }; var modelCombineOutput = subGraph.Add(modelCombine); @@ -418,7 +418,7 @@ public void TestCrossValidationMacroWithMultiClass() var modelCombine = new Legacy.Transforms.ManyHeterogeneousModelCombiner { - TransformModels = new ArrayVar(nopOutput.Model), + TransformModels = new ArrayVar(nopOutput.Model), PredictorModel = learnerOutput.PredictorModel }; var modelCombineOutput = subGraph.Add(modelCombine); @@ -626,7 +626,7 @@ public void TestCrossValidationMacroWithStratification() var modelCombine = new Legacy.Transforms.ManyHeterogeneousModelCombiner { - TransformModels = new ArrayVar(nopOutput.Model), + TransformModels = new ArrayVar(nopOutput.Model), PredictorModel = learnerOutput.PredictorModel }; var modelCombineOutput = subGraph.Add(modelCombine); @@ -728,7 +728,7 @@ public void TestCrossValidationMacroWithNonDefaultNames() var modelCombine = new Legacy.Transforms.ManyHeterogeneousModelCombiner { - TransformModels = new ArrayVar(textToKeyOutput.Model, hashOutput.Model), + TransformModels = new ArrayVar(textToKeyOutput.Model, hashOutput.Model), PredictorModel = learnerOutput.PredictorModel }; var modelCombineOutput = subGraph.Add(modelCombine); diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index 23d9b449ba..e8eb0fdcc6 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -442,7 +442,7 @@ public void EntryPointCreateEnsemble() var dataView = GetBreastCancerDataView(); const int nModels = 5; var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = nModels + 1 }); - var predictorModels = new IPredictorModel[nModels]; + var predictorModels = new PredictorModel[nModels]; var individualScores = new IDataView[nModels]; for (int i = 0; i < nModels; i++) { @@ -593,7 +593,7 @@ public void EntryPointOptionalParams() runner.RunAll(); - var model = runner.GetOutput("model1"); + var model = runner.GetOutput("model1"); Assert.NotNull(model); } @@ -732,7 +732,7 @@ public void EntryPointCalibrate() // This tests that the SchemaBindableCalibratedPredictor doesn't get confused if its sub-predictor is already calibrated. var fastForest = new FastForestClassification(Env, "Label", "Features"); var rmd = new RoleMappedData(splitOutput.TrainData[0], "Label", "Features"); - var ffModel = new PredictorModel(Env, rmd, splitOutput.TrainData[0], fastForest.Train(rmd)); + var ffModel = new PredictorModelImpl(Env, rmd, splitOutput.TrainData[0], fastForest.Train(rmd)); var calibratedFfModel = Calibrate.Platt(Env, new Calibrate.NoArgumentsInput() { Data = splitOutput.TestData[0], UncalibratedPredictorModel = ffModel }).PredictorModel; var twiceCalibratedFfModel = Calibrate.Platt(Env, @@ -747,7 +747,7 @@ public void EntryPointPipelineEnsemble() var dataView = GetBreastCancerDataView(); const int nModels = 5; var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = nModels + 1 }); - var predictorModels = new IPredictorModel[nModels]; + var predictorModels = new PredictorModel[nModels]; var individualScores = new IDataView[nModels]; for (int i = 0; i < nModels; i++) { @@ -783,7 +783,7 @@ public void EntryPointPipelineEnsemble() NormalizeFeatures = NormalizeOption.Yes }; predictorModels[i] = LogisticRegression.TrainBinary(Env, lrInput).PredictorModel; - var transformModel = new TransformModel(Env, data, splitOutput.TrainData[i]); + var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, new ModelOperations.SimplePredictorModelInput() @@ -877,10 +877,10 @@ public void EntryPointPipelineEnsemble() using (var strm = file.CreateWriteStream()) regressionEnsembleModel.Save(Env, strm); - IPredictorModel loadedFromSaved; + PredictorModel loadedFromSaved; using (var file = Env.OpenInputFile(modelPath)) using (var strm = file.OpenReadStream()) - loadedFromSaved = new PredictorModel(Env, strm); + loadedFromSaved = new PredictorModelImpl(Env, strm); var scoredFromSaved = ScoreModel.Score(Env, new ScoreModel.Input() @@ -1014,7 +1014,7 @@ public void EntryPointPipelineEnsembleText() const int nModels = 5; var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = nModels + 1 }); - var predictorModels = new IPredictorModel[nModels]; + var predictorModels = new PredictorModel[nModels]; var individualScores = new IDataView[nModels]; for (int i = 0; i < nModels; i++) { @@ -1046,7 +1046,7 @@ public void EntryPointPipelineEnsembleText() NormalizeFeatures = NormalizeOption.Yes }; predictorModels[i] = LogisticRegression.TrainBinary(Env, lrInput).PredictorModel; - var transformModel = new TransformModel(Env, data, splitOutput.TrainData[i]); + var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, new ModelOperations.SimplePredictorModelInput() @@ -1101,10 +1101,10 @@ public void EntryPointPipelineEnsembleText() using (var strm = file.CreateWriteStream()) regressionEnsembleModel.Save(Env, strm); - IPredictorModel loadedFromSaved; + PredictorModel loadedFromSaved; using (var file = Env.OpenInputFile(modelPath)) using (var strm = file.OpenReadStream()) - loadedFromSaved = new PredictorModel(Env, strm); + loadedFromSaved = new PredictorModelImpl(Env, strm); var scoredFromSaved = ScoreModel.Score(Env, new ScoreModel.Input() @@ -1216,7 +1216,7 @@ public void EntryPointMulticlassPipelineEnsemble() const int nModels = 5; var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = nModels + 1 }); - var predictorModels = new IPredictorModel[nModels]; + var predictorModels = new PredictorModel[nModels]; var individualScores = new IDataView[nModels]; for (int i = 0; i < nModels; i++) { @@ -1233,8 +1233,8 @@ public void EntryPointMulticlassPipelineEnsemble() var mlr = new MulticlassLogisticRegression(Env, "Label", "Features"); var rmd = new RoleMappedData(data, "Label", "Features"); - predictorModels[i] = new PredictorModel(Env, rmd, data, mlr.Train(rmd)); - var transformModel = new TransformModel(Env, data, splitOutput.TrainData[i]); + predictorModels[i] = new PredictorModelImpl(Env, rmd, data, mlr.Train(rmd)); + var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, new ModelOperations.SimplePredictorModelInput() @@ -1264,10 +1264,10 @@ public void EntryPointMulticlassPipelineEnsemble() using (var strm = file.CreateWriteStream()) mcEnsembleModel.Save(Env, strm); - IPredictorModel loadedFromSaved; + PredictorModel loadedFromSaved; using (var file = Env.OpenInputFile(modelPath)) using (var strm = file.OpenReadStream()) - loadedFromSaved = new PredictorModel(Env, strm); + loadedFromSaved = new PredictorModelImpl(Env, strm); var scoredFromSaved = ScoreModel.Score(Env, new ScoreModel.Input() @@ -1366,7 +1366,7 @@ public void EntryPointPipelineEnsembleGetSummary() const int nModels = 4; var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = nModels }); - var predictorModels = new IPredictorModel[nModels]; + var predictorModels = new PredictorModel[nModels]; for (int i = 0; i < nModels; i++) { var data = splitOutput.TrainData[i]; @@ -1383,7 +1383,7 @@ public void EntryPointPipelineEnsembleGetSummary() StdComputer = new ComputeLRTrainingStdThroughHal() }; predictorModels[i] = LogisticRegression.TrainBinary(Env, lrInput).PredictorModel; - var transformModel = new TransformModel(Env, data, splitOutput.TrainData[i]); + var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, new ModelOperations.SimplePredictorModelInput() @@ -1396,7 +1396,7 @@ public void EntryPointPipelineEnsembleGetSummary() RoleMappedSchema.CreatePair(RoleMappedSchema.ColumnRole.Feature, "Features"), RoleMappedSchema.CreatePair(RoleMappedSchema.ColumnRole.Label, "Label")); var predictor = trainer.Train(rmd); - predictorModels[i] = new PredictorModel(Env, rmd, splitOutput.TrainData[i], predictor); + predictorModels[i] = new PredictorModelImpl(Env, rmd, splitOutput.TrainData[i], predictor); } } @@ -2637,7 +2637,7 @@ public void EntryPointNormalizeIfNeeded() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model); } @@ -2732,7 +2732,7 @@ public void EntryPointTrainTestBinaryMacro() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model); var metrics = runner.GetOutput("OverallMetrics"); @@ -2839,7 +2839,7 @@ public void EntryPointTrainTestMacroNoTransformInput() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model); var metrics = runner.GetOutput("OverallMetrics"); @@ -2943,7 +2943,7 @@ public void EntryPointTrainTestMacro() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model); var metrics = runner.GetOutput("OverallMetrics"); @@ -3103,10 +3103,10 @@ public void EntryPointChainedTrainTestMacros() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model); - model = runner.GetOutput("model2"); + model = runner.GetOutput("model2"); Assert.NotNull(model); var metrics = runner.GetOutput("OverallMetrics"); @@ -3297,10 +3297,10 @@ public void EntryPointChainedCrossValMacros() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model[0]); - model = runner.GetOutput("model2"); + model = runner.GetOutput("model2"); Assert.NotNull(model[0]); var metrics = runner.GetOutput("OverallMetrics"); @@ -3476,7 +3476,7 @@ public void EntryPointSerialization() runner.RunAll(); - var model = runner.GetOutput("model"); + var model = runner.GetOutput("model"); Assert.NotNull(model); } diff --git a/test/Microsoft.ML.OnnxTransformTest/DnnImageFeaturizerTest.cs b/test/Microsoft.ML.OnnxTransformTest/DnnImageFeaturizerTest.cs index a57f752064..d5d071c0e5 100644 --- a/test/Microsoft.ML.OnnxTransformTest/DnnImageFeaturizerTest.cs +++ b/test/Microsoft.ML.OnnxTransformTest/DnnImageFeaturizerTest.cs @@ -44,7 +44,7 @@ private class TestDataDifferntType public string[] data_0; } - private float[] getSampleArrayData() + private float[] GetSampleArrayData() { var samplevector = new float[inputSize]; for (int i = 0; i < inputSize; i++) @@ -64,9 +64,9 @@ void TestDnnImageFeaturizer() return; - var samplevector = getSampleArrayData(); + var samplevector = GetSampleArrayData(); - var dataView = ComponentCreation.CreateDataView(Env, + var dataView = DataViewConstructionUtils.CreateFromList(Env, new TestData[] { new TestData() { @@ -145,7 +145,7 @@ public void TestOldSavingAndLoading() return; - var samplevector = getSampleArrayData(); + var samplevector = GetSampleArrayData(); var dataView = ComponentCreation.CreateDataView(Env, new TestData[] { diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 315c1d54be..35558a7e0a 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -608,7 +608,7 @@ public void TestTreeEnsembleCombiner() var dataPath = GetDataPath("breast-cancer.txt"); var dataView = ML.Data.ReadFromTextFile(dataPath); - var fastTrees = new IPredictorModel[3]; + var fastTrees = new PredictorModel[3]; for (int i = 0; i < 3; i++) { fastTrees[i] = FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Arguments @@ -631,7 +631,7 @@ public void TestTreeEnsembleCombinerWithCategoricalSplits() var dataView = ML.Data.ReadFromTextFile(dataPath); var cat = new OneHotEncodingEstimator(ML, "Categories", "Features").Fit(dataView).Transform(dataView); - var fastTrees = new IPredictorModel[3]; + var fastTrees = new PredictorModel[3]; for (int i = 0; i < 3; i++) { fastTrees[i] = FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Arguments @@ -647,14 +647,14 @@ public void TestTreeEnsembleCombinerWithCategoricalSplits() CombineAndTestTreeEnsembles(cat, fastTrees); } - private void CombineAndTestTreeEnsembles(IDataView idv, IPredictorModel[] fastTrees) + private void CombineAndTestTreeEnsembles(IDataView idv, PredictorModel[] fastTrees) { var combiner = new TreeEnsembleCombiner(Env, PredictionKind.BinaryClassification); var fastTree = combiner.CombineModels(fastTrees.Select(pm => pm.Predictor as IPredictorProducing)); var data = new RoleMappedData(idv, label: null, feature: "Features"); - var scored = ScoreModel.Score(Env, new ScoreModel.Input() { Data = idv, PredictorModel = new PredictorModel(Env, data, idv, fastTree) }).ScoredData; + var scored = ScoreModel.Score(Env, new ScoreModel.Input() { Data = idv, PredictorModel = new PredictorModelImpl(Env, data, idv, fastTree) }).ScoredData; Assert.True(scored.Schema.TryGetColumnIndex("Score", out int scoreCol)); Assert.True(scored.Schema.TryGetColumnIndex("Probability", out int probCol)); Assert.True(scored.Schema.TryGetColumnIndex("PredictedLabel", out int predCol)); @@ -731,7 +731,7 @@ public void TestEnsembleCombiner() var dataPath = GetDataPath("breast-cancer.txt"); var dataView = ML.Data.ReadFromTextFile(dataPath); - var predictors = new IPredictorModel[] + var predictors = new PredictorModel[] { FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Arguments { @@ -777,7 +777,7 @@ public void TestMultiClassEnsembleCombiner() var dataPath = GetDataPath("breast-cancer.txt"); var dataView = ML.Data.ReadFromTextFile(dataPath); - var predictors = new IPredictorModel[] + var predictors = new PredictorModel[] { LightGbm.TrainMultiClass(Env, new LightGbmArguments { @@ -808,7 +808,7 @@ public void TestMultiClassEnsembleCombiner() } private void CombineAndTestEnsembles(IDataView idv, string name, string options, PredictionKind predictionKind, - IPredictorModel[] predictors) + PredictorModel[] predictors) { var combiner = ComponentCatalog.CreateInstance( Env, typeof(SignatureModelCombiner), name, options, predictionKind); @@ -816,7 +816,7 @@ private void CombineAndTestEnsembles(IDataView idv, string name, string options, var predictor = combiner.CombineModels(predictors.Select(pm => pm.Predictor)); var data = new RoleMappedData(idv, label: null, feature: "Features"); - var scored = ScoreModel.Score(Env, new ScoreModel.Input() { Data = idv, PredictorModel = new PredictorModel(Env, data, idv, predictor) }).ScoredData; + var scored = ScoreModel.Score(Env, new ScoreModel.Input() { Data = idv, PredictorModel = new PredictorModelImpl(Env, data, idv, predictor) }).ScoredData; var predCount = Utils.Size(predictors); diff --git a/test/Microsoft.ML.TestFramework/ModelHelper.cs b/test/Microsoft.ML.TestFramework/ModelHelper.cs index 4692942e83..ff5e42f8a1 100644 --- a/test/Microsoft.ML.TestFramework/ModelHelper.cs +++ b/test/Microsoft.ML.TestFramework/ModelHelper.cs @@ -15,7 +15,7 @@ namespace Microsoft.ML.TestFramework public static class ModelHelper { private static MLContext s_environment = new MLContext(seed: 1); - private static ITransformModel s_housePriceModel; + private static TransformModel s_housePriceModel; public static void WriteKcHousePriceModel(string dataPath, string outputModelPath) { @@ -71,7 +71,7 @@ public static IDataView GetKcHouseDataView(string dataPath) ); } - private static ITransformModel CreateKcHousePricePredictorModel(string dataPath) + private static TransformModel CreateKcHousePricePredictorModel(string dataPath) { Experiment experiment = s_environment.CreateExperiment(); var importData = new Legacy.Data.TextLoader(dataPath) @@ -263,7 +263,7 @@ private static ITransformModel CreateKcHousePricePredictorModel(string dataPath) Legacy.Trainers.StochasticDualCoordinateAscentRegressor.Output learnerOutput = experiment.Add(learner); var combineModels = new Legacy.Transforms.ManyHeterogeneousModelCombiner(); - combineModels.TransformModels = new ArrayVar(numericalConcatenated.Model, categoryConcatenated.Model, categorized.Model, featuresConcatenated.Model); + combineModels.TransformModels = new ArrayVar(numericalConcatenated.Model, categoryConcatenated.Model, categorized.Model, featuresConcatenated.Model); combineModels.PredictorModel = learnerOutput.PredictorModel; Legacy.Transforms.ManyHeterogeneousModelCombiner.Output combinedModels = experiment.Add(combineModels); diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs index 667d3c6619..e23690cf5e 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs @@ -113,7 +113,7 @@ private ClassificationMetrics Evaluate(IHostEnvironment env, IDataView scoredDat // It does not work. It throws error "Failed to find 'Score' column" when Evaluate is called //var evaluator = new MultiClassClassifierEvaluator(env, new MultiClassClassifierEvaluator.Arguments() { OutputTopKAcc = 3 }); - var evaluator = new MultiClassMamlEvaluator(env, new MultiClassMamlEvaluator.Arguments() { OutputTopKAcc = 3 }); + IMamlEvaluator evaluator = new MultiClassMamlEvaluator(env, new MultiClassMamlEvaluator.Arguments() { OutputTopKAcc = 3 }); var metricsDic = evaluator.Evaluate(dataEval); return ClassificationMetrics.FromMetrics(env, metricsDic["OverallMetrics"], metricsDic["ConfusionMatrix"])[0]; diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/SentimentPredictionTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/SentimentPredictionTests.cs index 87732048ff..dd796b0b59 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/SentimentPredictionTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/SentimentPredictionTests.cs @@ -153,7 +153,7 @@ private Microsoft.ML.Legacy.Models.BinaryClassificationMetrics EvaluateBinary(IH // It does not work. It throws error "Failed to find 'Score' column" when Evaluate is called //var evaluator = new BinaryClassifierEvaluator(env, new BinaryClassifierEvaluator.Arguments()); - var evaluator = new BinaryClassifierMamlEvaluator(env, new BinaryClassifierMamlEvaluator.Arguments()); + IMamlEvaluator evaluator = new BinaryClassifierMamlEvaluator(env, new BinaryClassifierMamlEvaluator.Arguments()); var metricsDic = evaluator.Evaluate(dataEval); return Microsoft.ML.Legacy.Models.BinaryClassificationMetrics