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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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!");
        }