Source code for neurolab.error

# -*- coding: utf-8 -*-
""" Train error functions with derivatives

    :Example:
        >>> msef = MSE()
        >>> x = np.array([[1.0, 0.0], [2.0, 0.0]])
        >>> msef(x)
        1.25
        >>> # calc derivative:
        >>> msef.deriv(x[0])
        array([ 1.,  0.])

"""

import numpy as np


[docs]class MSE(): """ Mean squared error function :Parameters: e: ndarray current errors: target - output :Returns: v: float Error value :Example: >>> f = MSE() >>> x = np.array([[1.0, 0.0], [2.0, 0.0]]) >>> f(x) 1.25 """ def __call__(self, e): N = e.size v = np.sum(np.square(e)) / N return v
[docs] def deriv(self, e): """ Derivative of MSE error function :Parameters: e: ndarray current errors: target - output :Returns: d: ndarray Derivative: dE/d_out :Example: >>> f = MSE() >>> x = np.array([1.0, 0.0]) >>> # calc derivative: >>> f.deriv(x) array([ 1., 0.]) """ N = len(e) d = e * (2 / N) return d
[docs]class SSE: """ Sum squared error function :Parameters: e: ndarray current errors: target - output :Returns: v: float Error value """ def __call__(self, e): v = 0.5 * np.sum(np.square(e)) return v
[docs] def deriv(self, e): """ Derivative of SSE error function :Parameters: e: ndarray current errors: target - output :Returns: d: ndarray Derivative: dE/d_out """ return e
[docs]class SAE: """ Sum absolute error function :Parameters: e: ndarray current errors: target - output :Returns: v: float Error value """ def __call__(self, e): v = np.sum(np.abs(e)) return v
[docs] def deriv(self, e): """ Derivative of SAE error function :Parameters: e: ndarray current errors: target - output :Returns: d: ndarray Derivative: dE/d_out """ d = np.sign(e) return d
[docs]class MAE: """ Mean absolute error function :Parameters: e: ndarray current errors: target - output :Returns: v: float Error value """ def __call__(self, e): v = np.sum(np.abs(e)) / e.size return v
[docs] def deriv(self, e): """ Derivative of SAE error function :Parameters: e: ndarray current errors: target - output :Returns: d: ndarray Derivative: dE/d_out """ d = np.sign(e) / e.size return d