Exemplo n.º 1
0
 public static Model Train(Problem prob, TrainingArg arg)
 {
     List<double> labels = GetLabels(prob);
     if (labels.Count > 2)
     {
         List<BinaryClassifier> classifiers = new List<BinaryClassifier>(labels.Count);
         foreach (double label in labels)
         {
             Console.WriteLine("{0} vs all:",label);
             BinaryClassifier classifier = BinaryClassifier.Train(prob, arg, label);
             classifiers.Add(classifier);
             Console.WriteLine("finish");
         }
         Model model = new Model();
         model.NumberOfClasses = classifiers.Count;
         model.BinaryClassifiers = classifiers.ToArray();
         return model;
     }
     else if (labels.Count == 2)
     {
         BinaryClassifier[] classifiers = new BinaryClassifier[1];
         classifiers[0] = BinaryClassifier.Train(prob, arg, labels[0], labels[1]);
         Model model = new Model();
         model.NumberOfClasses = 2;
         model.BinaryClassifiers = classifiers;
         return model;
     }
     else
         throw new Exception(Messege.CouldNotClassify); 
 }
Exemplo n.º 2
0
 public static Model Train(Problem prob, TrainingArg arg)
 {
     List<double> labels = GetLabels(prob);
     if (labels.Count > 2)
     {
         List<BinaryClassifier> classifiers = new List<BinaryClassifier>(labels.Count);
         foreach (double label in labels)
         {
             Console.WriteLine("{0} vs all:",label);
             BinaryClassifier classifier = BinaryClassifier.Train(prob, arg, label);
             classifiers.Add(classifier);
             Console.WriteLine("finish");
         }
         Model model = new Model();
         model.NumberOfClasses = classifiers.Count;
         model.BinaryClassifiers = classifiers.ToArray();
         return model;
     }
     else if (labels.Count == 2)
     {
         BinaryClassifier[] classifiers = new BinaryClassifier[1];
         classifiers[0] = BinaryClassifier.Train(prob, arg, labels[0], labels[1]);
         Model model = new Model();
         model.NumberOfClasses = 2;
         model.BinaryClassifiers = classifiers;
         return model;
     }
     else
         throw new Exception(Messege.CouldNotClassify);
 }
Exemplo n.º 3
0
        /// <summary>
        /// Reads a Model from the provided stream.
        /// </summary>
        /// <param name="stream">The stream from which to read the Model.</param>
        /// <returns>the Model</returns>
        public static Model Read(Stream stream)
        {
            XmlDocument xmldoc = new XmlDocument();

            xmldoc.Load(stream);
            Model       model         = new Model();
            XmlNode     modelNode     = xmldoc.FirstChild;
            XmlNodeList classifyNodes = modelNode.ChildNodes;

            model.NumberOfClasses = int.Parse(modelNode.Attributes["NumberOfClasses"].Value);
            if ((model.NumberOfClasses == 2 && classifyNodes.Count != 1) &&
                (classifyNodes.Count != model.NumberOfClasses))
            {
                throw new Exception(Messege.ReadModelFail);
            }

            model.BinaryClassifiers = new BinaryClassifier[classifyNodes.Count];
            for (int i = 0; i < classifyNodes.Count; i++)
            {
                XmlElement       binaryClassifierNode = (XmlElement)classifyNodes.Item(i);
                BinaryClassifier binaryClassifer      = BinaryClassifier.DeserializeFromXML(binaryClassifierNode);
                model.BinaryClassifiers[i] = binaryClassifer;
            }
            return(model);
        }