public override IntPtr Create(TKernel kernel, double lambda, double tolerance, uint maxNumSupportVector) { if (!(lambda > 0)) { throw new ArgumentOutOfRangeException($"{nameof(lambda)} must be greater than 0."); } if (!(tolerance > 0)) { throw new ArgumentOutOfRangeException($"{nameof(tolerance)} must be greater than 0."); } if (!(maxNumSupportVector > 0)) { throw new ArgumentOutOfRangeException($"{nameof(maxNumSupportVector)} must be greater than 0."); } var err = NativeMethods.svm_pegasos_new2_double(this.Parameter.KernelType.ToNativeKernelType(), this.Parameter.SampleType.ToNativeMatrixElementType(), kernel.NativePtr, lambda, tolerance, maxNumSupportVector, out var ret); switch (err) { case NativeMethods.ErrorType.MatrixElementTypeNotSupport: throw new ArgumentException($"{this.Parameter.SampleType} is not supported."); case NativeMethods.ErrorType.MatrixElementTemplateSizeNotSupport: throw new ArgumentException($"{nameof(this.Parameter.TemplateColumns)} or {nameof(this.Parameter.TemplateRows)} is not supported."); case NativeMethods.ErrorType.SvmKernelNotSupport: throw new ArgumentException($"{this.Parameter.KernelType} is not supported."); } return(ret); }
public abstract IntPtr Create(TKernel kernel, T lambda, T tolerance, uint maxNumSupportVector);