public ProxyCountTable(int iCol, int iSlot, ICountTable baseCountTable)
                {
                    Contracts.CheckValue(baseCountTable, nameof(baseCountTable));
                    Contracts.Check(baseCountTable.GarbageThreshold == 0, "Garbage bin not supported for shared table");

                    _mixin = Hashing.MurmurRound((uint)iCol, (uint)iSlot);
                    _table = baseCountTable;
                }
        // Fills _labelBinCount log odds features. One per class, or only one if 2 classes.
        private void GenerateLogOdds(int iCol, ICountTable countTable, Span <float> counts, Span <float> logOdds, float sum)
        {
            _host.Assert(counts.Length == _labelBinCount);
            _host.Assert(logOdds.Length == _logOddsCount);

            for (int i = 0; i < _logOddsCount; i++)
            {
                _host.Assert(counts[i] >= 0);
                if (counts[i] <= 0 && countTable.PriorFrequencies[i] <= 0 || countTable.PriorFrequencies[i] >= 1)
                {
                    logOdds[i] = 0; // guarding against infinite log-odds
                }
                else
                {
                    logOdds[i] = (float)Math.Log(
                        (counts[i] + PriorCoef[iCol] * countTable.PriorFrequencies[i]) /
                        (sum - counts[i] + PriorCoef[iCol] * (1 - countTable.PriorFrequencies[i])));
                }
            }
        }