< Summary

Information
Class: Intentum.AI.Ensemble.WeightedEnsemble
Assembly: Intentum.AI
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.AI/Ensemble/WeightedEnsemble.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 25
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
Combine(...)100%22100%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.AI/Ensemble/WeightedEnsemble.cs

#LineLine coverage
 1using Intentum.Core.Intents;
 2
 3namespace Intentum.AI.Ensemble;
 4
 5public sealed class WeightedEnsemble : IEnsembleStrategy
 6{
 7    public Intent Combine(IReadOnlyList<ModelResult> results)
 58    {
 59        if (results.Count == 0)
 110            return new Intent("Unknown", [], new IntentConfidence(0, "Low"));
 11
 1212        var totalWeight = results.Sum(r => r.Weight);
 1213        var weightedScore = results.Sum(r => r.Score * r.Weight) / totalWeight;
 14
 415        var majorityName = results
 816            .GroupBy(r => r.Name)
 1517            .OrderByDescending(g => g.Sum(r => r.Weight))
 1118            .ThenByDescending(g => g.Average(r => r.Score))
 419            .First()
 420            .Key;
 21
 422        var level = IntentConfidence.FromScore(weightedScore).Level;
 423        return new Intent(majorityName, [], new IntentConfidence(weightedScore, level));
 524    }
 25}