# `Monty.Frameworks.Models.Salience.Strategies.Vocus2.WeightedMean`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/frameworks/models/salience/strategies/vocus2/weighted_mean.ex#L1)

Averages the feature maps, each weighted by how much it is trusted.

Mirrors
`tbp/monty/frameworks/models/salience/strategies/vocus2/vocus2.py::WeightedMean`.
The weights are renormalised to sum to one (in absolute value), which is what
makes this the default combiner: with `L`, `a`, `b` at 1 and `depth` at 0.1, a
missing channel changes the *relative* pull of the others but not the overall
scale of the map — the same property that makes the salience map comparable
between a config that uses depth and one that does not.

Weights that cancel out — all zero, or a set summing to zero in absolute value
— have no mean to take, and Monty would answer a map of NaNs; this raises
instead, because a NaN salience map is not something a caller can act on.

# `t`

```elixir
@type t() :: %Monty.Frameworks.Models.Salience.Strategies.Vocus2.WeightedMean{
  weights: %{optional(String.t()) =&gt; number()}
}
```

# `new`

```elixir
@spec new(%{optional(String.t()) =&gt; number()}) :: t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
