Esempio n. 1
0
        public static double Prediction(IEnumerable <string> tokens, ClassIndex index)
        {
            var tokenPosteriori = from t in tokens
                                  let classOccurences = index.TokenCount(t)
                                                        where classOccurences > 0
                                                        select(double) classOccurences / index.DocumentCount;

            return(tokenPosteriori.Aggregate(1.0, (current, item) => current * item));
        }
Esempio n. 2
0
        public static double Prediction(IEnumerable <string> tokens, ClassIndex index, IEnumerable <ClassIndex> peers)
        {
            double allDocsCount    = (double)peers.Select(x => x.DocumentCount).Sum() + index.DocumentCount;
            double allUniqueTokens = (double)peers.Select(x => x.Tokens.Count()).Sum() + index.Tokens.Count();
            double allWordsInClass = (double)index.Tokens.Values.Sum();

            var classProbability = Math.Log((double)index.DocumentCount / allDocsCount);
            var score            = classProbability + tokens.Sum(x => Math.Log(((double)index.TokenCount(x) + 1) / (allUniqueTokens + allWordsInClass)));

            return(Math.Pow(Math.E, score));
        }