Beispiel #1
0
            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);
            }
Beispiel #2
0
 public abstract IntPtr Create(TKernel kernel, T lambda, T tolerance, uint maxNumSupportVector);