diff --git a/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs b/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs index 7978ffb761..e8ea19684e 100644 --- a/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs +++ b/src/Microsoft.ML.Ensemble/EntryPoints/CreateEnsemble.cs @@ -267,7 +267,7 @@ public static CommonOutputs.MulticlassClassificationOutput CreateMultiClassPipel combiner = new MultiAverage(host, new MultiAverage.Arguments() { Normalize = true }); break; case ClassifierCombiner.Vote: - combiner = new MultiVoting(host, new MultiVoting.Arguments()); + combiner = new MultiVoting(host); break; default: throw host.Except("Unknown combiner kind"); diff --git a/src/Microsoft.ML.Ensemble/EntryPoints/OutputCombiner.cs b/src/Microsoft.ML.Ensemble/EntryPoints/OutputCombiner.cs index 4f4107639a..537b35f47b 100644 --- a/src/Microsoft.ML.Ensemble/EntryPoints/OutputCombiner.cs +++ b/src/Microsoft.ML.Ensemble/EntryPoints/OutputCombiner.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; using Microsoft.ML.Ensemble.EntryPoints; using Microsoft.ML.Runtime; using Microsoft.ML.Runtime.Ensemble.OutputCombiners; @@ -13,7 +12,7 @@ [assembly: EntryPointModule(typeof(MultiAverage))] [assembly: EntryPointModule(typeof(MultiMedian))] [assembly: EntryPointModule(typeof(MultiStacking))] -[assembly: EntryPointModule(typeof(MultiVoting))] +[assembly: EntryPointModule(typeof(MultiVotingFactory))] [assembly: EntryPointModule(typeof(MultiWeightedAverage))] [assembly: EntryPointModule(typeof(RegressionStacking))] [assembly: EntryPointModule(typeof(Stacking))] @@ -43,4 +42,10 @@ public sealed class VotingFactory : ISupportBinaryOutputCombinerFactory { IBinaryOutputCombiner IComponentFactory.CreateComponent(IHostEnvironment env) => new Voting(env); } + + [TlcModule.Component(Name = MultiVoting.LoadName, FriendlyName = Voting.UserName)] + public sealed class MultiVotingFactory : ISupportMulticlassOutputCombinerFactory + { + public IMultiClassOutputCombiner CreateComponent(IHostEnvironment env) => new MultiVoting(env); + } } diff --git a/src/Microsoft.ML.Ensemble/OutputCombiners/MultiVoting.cs b/src/Microsoft.ML.Ensemble/OutputCombiners/MultiVoting.cs index 0cd36c9e47..ee55b94c77 100644 --- a/src/Microsoft.ML.Ensemble/OutputCombiners/MultiVoting.cs +++ b/src/Microsoft.ML.Ensemble/OutputCombiners/MultiVoting.cs @@ -6,12 +6,11 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Runtime.Data; using Microsoft.ML.Runtime.Ensemble.OutputCombiners; -using Microsoft.ML.Runtime.EntryPoints; using Microsoft.ML.Runtime.Internal.Utilities; using Microsoft.ML.Runtime.Model; using Microsoft.ML.Runtime.Numeric; -[assembly: LoadableClass(typeof(MultiVoting), typeof(MultiVoting.Arguments), typeof(SignatureCombiner), Voting.UserName, MultiVoting.LoadName)] +[assembly: LoadableClass(typeof(MultiVoting), null, typeof(SignatureCombiner), Voting.UserName, MultiVoting.LoadName)] [assembly: LoadableClass(typeof(MultiVoting), null, typeof(SignatureLoadModel), Voting.UserName, MultiVoting.LoaderSignature)] namespace Microsoft.ML.Runtime.Ensemble.OutputCombiners @@ -33,16 +32,12 @@ private static VersionInfo GetVersionInfo() loaderSignature: LoaderSignature); } - [TlcModule.Component(Name = LoadName, FriendlyName = Voting.UserName)] - public sealed class Arguments : ArgumentsBase, ISupportMulticlassOutputCombinerFactory + private sealed class Arguments : ArgumentsBase { - public new bool Normalize = false; - - public IMultiClassOutputCombiner CreateComponent(IHostEnvironment env) => new MultiVoting(env, this); } - public MultiVoting(IHostEnvironment env, Arguments args) - : base(env, LoaderSignature, args) + public MultiVoting(IHostEnvironment env) + : base(env, LoaderSignature, new Arguments() { Normalize = false }) { Host.Assert(!Normalize); } diff --git a/src/Microsoft.ML/CSharpApi.cs b/src/Microsoft.ML/CSharpApi.cs index de5f800155..cfc269f3c5 100644 --- a/src/Microsoft.ML/CSharpApi.cs +++ b/src/Microsoft.ML/CSharpApi.cs @@ -16637,11 +16637,6 @@ public sealed class MultiStackingEnsembleMulticlassOutputCombiner : EnsembleMult public sealed class MultiVotingEnsembleMulticlassOutputCombiner : EnsembleMulticlassOutputCombiner { - /// - /// Whether to normalize the output of base models before combining them - /// - public bool Normalize { get; set; } = true; - internal override string ComponentName => "MultiVoting"; } diff --git a/test/BaselineOutput/Common/EntryPoints/core_manifest.json b/test/BaselineOutput/Common/EntryPoints/core_manifest.json index 708dd8b7f3..6495aa8bed 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_manifest.json +++ b/test/BaselineOutput/Common/EntryPoints/core_manifest.json @@ -22798,20 +22798,7 @@ "Name": "MultiVoting", "Desc": null, "FriendlyName": "Voting", - "Settings": [ - { - "Name": "Normalize", - "Type": "Bool", - "Desc": "Whether to normalize the output of base models before combining them", - "Aliases": [ - "norm" - ], - "Required": false, - "SortOrder": 50.0, - "IsNullable": false, - "Default": true - } - ] + "Settings": [] }, { "Name": "MultiWeightedAverage",