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