Nonlinear Regression.
Inheritance Hierarchy Namespace: Accord.Statistics.Models.RegressionAccord.Statistics (in Accord.Statistics.dll) Version: 3.8.0
Syntax[SerializableAttribute] public class NonlinearRegression : TransformBase<double[], double>, ICloneable
<SerializableAttribute> Public Class NonlinearRegression Inherits TransformBase(Of Double(), Double) Implements ICloneableRequest Example View Source
The NonlinearRegression type exposes the following members.
Constructors Properties Methods Name Description CloneCreates a new object that is a copy of the current instance.
Compute Obsolete.Computes the model output for the given input vector.
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object.) FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.) GetHashCodeServes as the default hash function.
(Inherited from Object.) GetTypeGets the Type of the current instance.
(Inherited from Object.) MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object.) ToStringReturns a string that represents the current object.
(Inherited from Object.) Transform(TInput)Applies the transformation to a set of input vectors, producing an associated set of output vectors.
(Inherited from TransformBaseTInput, TOutput.) Transform(Double)Applies the transformation to an input, producing an associated output.
(Overrides TransformBaseTInput, TOutputTransform(TInput).) Transform(TInput, TOutput)Applies the transformation to an input, producing an associated output.
(Inherited from TransformBaseTInput, TOutput.) Top Extension Methods Name Description HasMethodChecks whether an object implements a method with the given name.
(Defined by ExtensionMethods.) IsEqualCompares two objects for equality, performing an elementwise comparison if the elements are vectors or matrices.
(Defined by Matrix.) To(Type) Overloaded.Converts an object into another type, irrespective of whether the conversion can be done at compile time or not. This can be used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) ToT Overloaded.Converts an object into another type, irrespective of whether the conversion can be done at compile time or not. This can be used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) Top ExamplesThe first example shows how to fit a non-linear regression with LevenbergMarquardt.
double[,] data = { { -40, -21142.1111111111 }, { -30, -21330.1111111111 }, { -20, -12036.1111111111 }, { -10, 7255.3888888889 }, { 0, 32474.8888888889 }, { 10, 32474.8888888889 }, { 20, 9060.8888888889 }, { 30, -11628.1111111111 }, { 40, -15129.6111111111 }, }; double[][] inputs = data.GetColumn(0).ToJagged(); double[] outputs = data.GetColumn(1); var nls = new NonlinearLeastSquares() { NumberOfParameters = 3, StartValues = new[] { 4.2, 0.3, 1 }, Function = (w, x) => w[0] * x[0] * x[0] + w[1] * x[0] + w[2], Gradient = (w, x, r) => { r[0] = w[0]* w[0]; r[1] = w[0]; r[2] = 1; }, Algorithm = new LevenbergMarquardt() { MaxIterations = 100, Tolerance = 0 } }; var regression = nls.Learn(inputs, outputs); double[] predict = regression.Transform(inputs);
Dim data(,) As Double = { {-40, -21142.1111111111}, {-30, -21330.1111111111}, {-20, -12036.1111111111}, {-10, 7255.3888888889}, {0, 32474.8888888889}, {10, 32474.8888888889}, {20, 9060.8888888889}, {30, -11628.1111111111}, {40, -15129.6111111111} } Dim inputs As Double()() = data.GetColumn(0).ToJagged() Dim outputs As Double() = data.GetColumn(1) Dim nls As NonlinearLeastSquares = New NonlinearLeastSquares With nls .NumberOfParameters = 3 .StartValues = {4.2, 0.3, 1} .Function = Function(w, x) w(0) * x(0) * x(0) + w(1) * x(0) + w(2) .Gradient = Sub(w, x, r) r(0) = 2 * w(0) r(1) = w(1) r(2) = w(2) End Sub End With Dim algorithm As LevenbergMarquardt = New LevenbergMarquardt With algorithm .MaxIterations = 100 .Tolerance = 0 End With nls.Algorithm = algorithm Dim regression As NonlinearRegression = nls.Learn(inputs, outputs) Dim predict As Double() = regression.Transform(inputs)
The second example shows how to fit a non-linear regression with GaussNewton.
double[,] data = { { 0.03, 0.1947, 0.425, 0.626, 1.253, 2.500, 3.740 }, { 0.05, 0.127, 0.094, 0.2122, 0.2729, 0.2665, 0.3317} }; double[][] inputs = data.GetRow(0).ToJagged(); double[] outputs = data.GetRow(1); var nls = new NonlinearLeastSquares() { StartValues = new[] { 0.9, 0.2 }, Function = (w, x) => (w[0] * x[0]) / (w[1] + x[0]), Gradient = (w, x, r) => { r[0] = -((-x[0]) / (w[1] + x[0])); r[1] = -((w[0] * x[0]) / Math.Pow(w[1] + x[0], 2)); }, Algorithm = new GaussNewton() { MaxIterations = 0, Tolerance = 1e-5 } }; var regression = nls.Learn(inputs, outputs); double[] predict = regression.Transform(inputs);
Dim data As Double(,) = { {0.03, 0.1947, 0.425, 0.626, 1.253, 2.5, 3.74}, {0.05, 0.127, 0.094, 0.2122, 0.2729, 0.2665, 0.3317} } Dim inputs As Double()() = data.GetRow(0).ToJagged() Dim outputs As Double() = data.GetRow(1) Dim nls As NonlinearLeastSquares = New NonlinearLeastSquares With nls .StartValues = {0.9, 0.2} .Function = Function(w, x) w(0) * x(0) / (w(1) + x(0)) .Gradient = Sub(w, x, r) r(0) = -((-x(0)) / (w(1) + x(0))) r(1) = -((w(0) * x(0)) / System.Math.Pow(w(1) + x(0), 2)) End Sub End With Dim algorithm As GaussNewton = New GaussNewton With algorithm .MaxIterations = 0 .Tolerance = 0.00001 End With nls.Algorithm = algorithm Dim regression As NonlinearRegression = nls.Learn(inputs, outputs) Dim predict As Double() = regression.Transform(inputs)See Also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4