Source code for sysidentpy.utils.display_results

# Authors:
#           Wilson Rocha Lacerda Junior <wilsonrljr@outlook.com>
# License: BSD 3 clause

import numpy as np
from collections import Counter


[docs]def results( final_model=None, theta=None, err=None, n_terms=None, theta_precision=4, err_precision=8, dtype="dec", ): """Write the model regressors, parameters and ERR values. This function returns the model regressors, its respectives parameter and ERR value on a string matrix. Parameters ---------- theta_precision : int (default: 4) Precision of shown parameters values. err_precision : int (default: 8) Precision of shown ERR values. dtype : string (default: 'dec') Type of representation: sci - Scientific notation; dec - Decimal notation. Returns ------- output_matrix : string Where: First column represents each regressor element; Second column represents associated parameter; Third column represents the error reduction ratio associated to each regressor. """ if not isinstance(theta_precision, int) or theta_precision < 1: raise ValueError( "theta_precision must be integer and > zero. Got %f" % theta_precision ) if not isinstance(err_precision, int) or err_precision < 1: raise ValueError( "err_precision must be integer and > zero. Got %f" % err_precision ) if dtype not in ("dec", "sci"): raise ValueError("dtype must be dec or sci. Got %s" % dtype) output_matrix = [] theta_output_format = "{:." + str(theta_precision) err_output_format = "{:." + str(err_precision) if dtype == "dec": theta_output_format = theta_output_format + "f}" err_output_format = err_output_format + "f}" else: theta_output_format = theta_output_format + "E}" err_output_format = err_output_format + "E}" for i in range(0, n_terms): if np.max(final_model[i]) < 1: tmp_regressor = str(1) else: regressor_dic = Counter(final_model[i]) regressor_string = [] for j in range(0, len(list(regressor_dic.keys()))): regressor_key = list(regressor_dic.keys())[j] if regressor_key < 1: translated_key = "" translated_exponent = "" else: delay_string = str( int(regressor_key - np.floor(regressor_key / 1000) * 1000) ) if int(regressor_key / 1000) < 2: translated_key = "y(k-" + delay_string + ")" else: translated_key = ( "x" + str(int(regressor_key / 1000) - 1) + "(k-" + delay_string + ")" ) if regressor_dic[regressor_key] < 2: translated_exponent = "" else: translated_exponent = "^" + str(regressor_dic[regressor_key]) regressor_string.append(translated_key + translated_exponent) tmp_regressor = "".join(regressor_string) current_parameter = theta_output_format.format(theta[i, 0]) current_err = err_output_format.format(err[i]) current_output = [tmp_regressor, current_parameter, current_err] output_matrix.append(current_output) return output_matrix