dtoolkit.accessor.series.error_report#

dtoolkit.accessor.series.error_report(s: Series, predicted: ndarray | Series | list[int | float], /, absolute_error: str = 'absolute_error', relative_error: str = 'relative_error') DataFrame[source]#

Calculate absolute_error and relative_error of two columns.

\[ \begin{align}\begin{aligned}absolute\_error = \lvert predicted - s \rvert\\relative\_error = \frac{absolute\_error}{s}\end{aligned}\end{align} \]
Parameters:
predictedlist of int or float, ndarrray, Series

A array is compared to s.

columnslist of Hashable, optional

The columns of returning DataFrame, each represents true value, predicted value, absolute error, and relative error.

Deprecated since version 0.0.19: Please use ‘absolute_error’ and ‘relative_error’ instead.

absolute_errorstr, default ‘absolute_error’

The name of the column of absolute error.

relative_errorstr, default ‘relative_error’

The name of the column of relative error.

Returns:
DataFrame

Return four columns DataFrame and each represents ‘true value’, ‘predicted value’, ‘absolute error’, and ‘relative error’.

Raises:
IndexError
  • If len(s) != len(predicted).

  • If predicted is Series and its index not equal to s’s index.

Examples

>>> import dtoolkit
>>> import pandas as pd
>>> s = pd.Series([1, 2, 3])
>>> s.error_report([3, 2, 1])
   true  predicted  absolute_error  relative_error
0     1          3               2        2.000000
1     2          2               0        0.000000
2     3          1               2        0.666667

If the name of s or predicted is not None, the columns of error_report would use the name of s and predicted.

>>> s = pd.Series([1, 2, 3], name="y")
>>> predicted = pd.Series([3, 2, 1], name="y predicted")
>>> s.error_report(predicted)
   y  y predicted  absolute_error  relative_error
0  1            3               2        2.000000
1  2            2               0        0.000000
2  3            1               2        0.666667

Set absolute_error and relative_error.

>>> s.rename('a').error_report(
...     predicted.rename('b'),
...     absolute_error="c",
...     relative_error="d",
... )
   a  b  c         d
0  1  3  2  2.000000
1  2  2  0  0.000000
2  3  1  2  0.666667