/// <summary> /// Makes the serialization. /// </summary> /// <param name="svm">The SVM.</param> /// <param name="path">The path.</param> public static void SerializeSVM(SupportVectorMachine <Gaussian> svm, string path) { SVMGaussianData data = new SVMGaussianData(); data.Initialize( svm.NumberOfInputs, svm.NumberOfOutputs, svm.SupportVectors, svm.Threshold, svm.Weights, svm.Kernel.Gamma, svm.Kernel.Sigma, svm.Kernel.SigmaSquared); Serialize(data, path); }
/// <summary> /// Deserializes the SVM. /// </summary> /// <param name="path">The path.</param> /// <returns></returns> public static SupportVectorMachine <Gaussian> DeserializeSVM(string path) { var teacher = new SequentialMinimalOptimization <Gaussian>() { UseComplexityHeuristic = true, UseKernelEstimation = true }; double[][] inputs2 = new double[4][]; inputs2[0] = new[] { 1d, 1d }; inputs2[1] = new[] { 1d, 1d }; inputs2[2] = new[] { 1d, 1d }; inputs2[3] = new[] { 1d, 1d }; double[] outputs2 = { 1, 1, 0, 0 }; SupportVectorMachine <Gaussian> svmAfter = teacher.Learn(inputs2, outputs2); SVMGaussianData dataAfter = Deserialize <SVMGaussianData>(path); svmAfter.NumberOfInputs = dataAfter.NumberOfInputs; svmAfter.NumberOfOutputs = dataAfter.NumberOfOutputs; svmAfter.SupportVectors = dataAfter.SupportVectors; svmAfter.Threshold = dataAfter.Threshold; svmAfter.Weights = dataAfter.Weights; Gaussian kernel = new Gaussian { Gamma = dataAfter.Gamma, Sigma = dataAfter.Sigma, SigmaSquared = dataAfter.SigmaSquared }; svmAfter.Kernel = kernel; return(svmAfter); }