/// <summary> /// Predicts the given Label from the object. /// </summary> /// <param name="o"></param> /// <returns></returns> public object Predict(object o) { var current = Generator.Descriptor.Convert(o, false).ToVector(); var predictions = Classifiers.Select(s => new Tuple <object, double>(s.Key, s.Value.PredictRaw(current))) .OrderByDescending(or => or.Item2).ToArray(); return(predictions.FirstOrDefault().Item1); }
/// <summary> /// Predict all given Labels across all classifiers for the current object. /// </summary> /// <param name="o"></param> /// <returns></returns> public IEnumerable <object> PredictClasses(object o) { var current = Generator.Descriptor.ToVector(o); var prediction = Classifiers.Select(s => new Tuple <object, double>(s.Key, s.Value.PredictRaw(current))) .OrderByDescending(or => or.Item2); var sum = prediction.Sum(s => s.Item2); foreach (var predict in prediction) { if (predict.Item2 >= 0.5) { yield return(predict.Item1); } } }