A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://accord-framework.net/docs/html/T_Accord_Statistics_Models_Regression_NonlinearRegression.htm below:

NonlinearRegression Class

Nonlinear Regression.

Inheritance Hierarchy Namespace:  Accord.Statistics.Models.Regression
Assembly:

Accord.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 ICloneable
Request Example View Source

The NonlinearRegression type exposes the following members.

Constructors Properties Methods   Name Description Clone

Creates a new object that is a copy of the current instance.

Compute Obsolete.

Computes the model output for the given input vector.

Equals

Determines whether the specified object is equal to the current object.

(Inherited from Object.) Finalize

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.

(Inherited from Object.) GetHashCode

Serves as the default hash function.

(Inherited from Object.) GetType

Gets the Type of the current instance.

(Inherited from Object.) MemberwiseClone

Creates a shallow copy of the current Object.

(Inherited from Object.) ToString

Returns 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 HasMethod

Checks whether an object implements a method with the given name.

(Defined by ExtensionMethods.) IsEqual

Compares 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 Examples

The 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