/// <summary> /// /// </summary> /// <param name="problem"></param> /// <param name="parameter"></param> /// <returns></returns> public static string CheckParameter(SVMProblem problem, SVMParameter parameter) { if (problem == null) { throw new ArgumentNullException("problem"); } if (parameter == null) { throw new ArgumentNullException("parameter"); } IntPtr ptr_problem = SVMProblem.Allocate(problem); IntPtr ptr_parameter = SVMParameter.Allocate(parameter); IntPtr ptr_output = libsvm.svm_check_parameter(ptr_problem, ptr_parameter); SVMProblem.Free(ptr_problem); SVMParameter.Free(ptr_parameter); string output = Marshal.PtrToStringAnsi(ptr_output); Marshal.FreeHGlobal(ptr_output); ptr_output = IntPtr.Zero; return(output); }
/// <summary> /// /// </summary> /// <param name="problem"></param> /// <param name="parameter"></param> /// <param name="nFolds"></param> /// <param name="target"></param> public static void CrossValidation(SVMProblem problem, SVMParameter parameter, int nFolds, out double[] target) { if (problem == null) { throw new ArgumentNullException("problem"); } if (parameter == null) { throw new ArgumentNullException("parameter"); } if (nFolds < 2) { throw new ArgumentOutOfRangeException("nFolds"); } IntPtr ptr_target = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(double)) * problem.Length); IntPtr ptr_problem = SVMProblem.Allocate(problem); IntPtr ptr_parameter = SVMParameter.Allocate(parameter); libsvm.svm_cross_validation(ptr_problem, ptr_parameter, nFolds, ptr_target); target = new double[problem.Length]; Marshal.Copy(ptr_target, target, 0, target.Length); SVMProblem.Free(ptr_problem); SVMParameter.Free(ptr_parameter); Marshal.FreeHGlobal(ptr_target); ptr_target = IntPtr.Zero; }
/// <summary> /// This function constructs and returns an SVM model according to the given training data and parameters. /// </summary> /// <param name="problem">Training data.</param> /// <param name="parameter">Parameter set.</param> /// <returns>SVM model according to the given training data and parameters.</returns> public static SVMModel Train(SVMProblem problem, SVMParameter parameter) { IntPtr ptr_problem = SVMProblem.Allocate(problem); IntPtr ptr_parameter = SVMParameter.Allocate(parameter); IntPtr ptr_model = libsvm.svm_train(ptr_problem, ptr_parameter); SVMModel model = SVMModel.Convert(ptr_model); SVMProblem.Free(ptr_problem); SVMParameter.Free(ptr_parameter); libsvm.svm_free_model_content(ptr_model); return(model); }
public static void Free(IntPtr ptr) { if (ptr == IntPtr.Zero) { return; } svm_problem x = (svm_problem)Marshal.PtrToStructure(ptr, typeof(svm_problem)); SVMProblem.Free(x); Marshal.DestroyStructure(ptr, typeof(svm_problem)); Marshal.FreeHGlobal(ptr); ptr = IntPtr.Zero; }
/// <summary> /// /// </summary> /// <param name="problem"></param> /// <param name="parameter"></param> /// <param name="nFolds"></param> /// <param name="target"></param> public static void CrossValidation(SVMProblem problem, SVMParameter parameter, int nFolds, out double[] target) { IntPtr ptr_target = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(double)) * problem.Length); IntPtr ptr_problem = SVMProblem.Allocate(problem); IntPtr ptr_parameter = SVMParameter.Allocate(parameter); libsvm.svm_cross_validation(ptr_problem, ptr_parameter, nFolds, ptr_target); target = new double[problem.Length]; Marshal.Copy(ptr_target, target, 0, target.Length); SVMProblem.Free(ptr_problem); SVMParameter.Free(ptr_parameter); Marshal.FreeHGlobal(ptr_target); ptr_target = IntPtr.Zero; }
/// <summary> /// /// </summary> /// <param name="problem"></param> /// <param name="parameter"></param> /// <returns></returns> public static string CheckParameter(SVMProblem problem, SVMParameter parameter) { IntPtr ptr_problem = SVMProblem.Allocate(problem); IntPtr ptr_parameter = SVMParameter.Allocate(parameter); IntPtr ptr_output = libsvm.svm_check_parameter(ptr_problem, ptr_parameter); SVMProblem.Free(ptr_problem); SVMParameter.Free(ptr_parameter); string output = Marshal.PtrToStringAnsi(ptr_output); Marshal.FreeHGlobal(ptr_output); ptr_output = IntPtr.Zero; return(output); }
/// <summary> /// This function constructs and returns an SVM model according to the given training data and parameters. /// </summary> /// <param name="problem">Training data.</param> /// <param name="parameter">Parameter set.</param> /// <returns>SVM model according to the given training data and parameters.</returns> public static SVMModel Train(SVMProblem problem, SVMParameter parameter) { if (problem == null) { throw new ArgumentNullException("problem"); } if (parameter == null) { throw new ArgumentNullException("parameter"); } IntPtr ptr_problem = SVMProblem.Allocate(problem); IntPtr ptr_parameter = SVMParameter.Allocate(parameter); IntPtr ptr_model = libsvm.svm_train(ptr_problem, ptr_parameter); SVMModel model = SVMModel.Convert(ptr_model); SVMProblem.Free(ptr_problem); SVMParameter.Free(ptr_parameter); libsvm.svm_free_model_content(ptr_model); return(model); }