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)); }
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)); }