private void UpdateTextBox() { using (MemoryStream s = new MemoryStream()) { StreamWriter writer = new StreamWriter(s); writer.WriteLine("RangeTransform:"); writer.Flush(); using (MemoryStream memStream = new MemoryStream()) { RangeTransform.Write(memStream, Content.RangeTransform); memStream.Seek(0, SeekOrigin.Begin); memStream.WriteTo(s); } writer.WriteLine("Model:"); writer.Flush(); using (MemoryStream memStream = new MemoryStream()) { svm.svm_save_model(new StreamWriter(memStream), Content.Model); memStream.Seek(0, SeekOrigin.Begin); memStream.WriteTo(s); } s.Flush(); s.Seek(0, SeekOrigin.Begin); StreamReader reader = new StreamReader(s); textBox.Text = reader.ReadToEnd(); } }
public string SaveModel(ClassifyOptions options) { options.TransformFilePath = Path.Combine(options.ModelDir, "transform"); options.FeaturesFileName = Path.Combine(options.ModelDir, "features"); options.DictionaryFileName = Path.Combine(options.ModelDir, "dictionary"); options.CategoriesFileName = Path.Combine(options.ModelDir, "categories"); File.WriteAllText(options.FeaturesFileName, JsonConvert.SerializeObject(features)); File.WriteAllText(options.DictionaryFileName, JsonConvert.SerializeObject(dictionary)); File.WriteAllText(options.CategoriesFileName, JsonConvert.SerializeObject(categories)); RangeTransform.Write(options.TransformFilePath, transform); Bigtree.Algorithm.SVM.Model.Write(options.ModelFilePath, model); return(options.ModelFilePath); }
public void SVMClassifierTrain(List <FeaturesWithLabel> featureSets, ClassifyOptions options, SvmType svm = SvmType.C_SVC, KernelType kernel = KernelType.RBF, bool probability = true, string outputFile = null) { // copy test multiclass Model Problem train = new Problem(); train.X = GetData(featureSets).ToArray(); train.Y = GetLabels(featureSets).ToArray(); train.Count = train.X.Count(); train.MaxIndex = 300;//int.MaxValue; Parameter param = new Parameter(); RangeTransform transform = RangeTransform.Compute(train); Problem scaled = transform.Scale(train); param.Gamma = 1.0 / 3; param.SvmType = svm; param.KernelType = kernel; param.Probability = probability; int numberOfClasses = train.Y.Distinct().Count(); if (numberOfClasses == 1) { throw new ArgumentException("Number of classes can't be one!"); } if (svm == SvmType.C_SVC) { for (int i = 0; i < numberOfClasses; i++) { param.Weights[i] = 1; } } var model = Training.Train(scaled, param); RangeTransform.Write(options.TransformFilePath, transform); SVM.BotSharp.MachineLearning.Model.Write(options.ModelFilePath, model); Console.Write("Training finished!"); }