## 2 Materials and Methods
### NNetEn Calculation  
As shown in Figure 3, the main steps involved in calculating NNetEn are described in detail. Basically, it is the same structure as LogNNet neural networks we presented in [27]. An important feature of the reservoir is the presence of a matrix transformation, in which the matrix coefficients are filled with the time series \(X\).  
The main stages of NNetEn calculation used in this study are described in detail below.  
Stage 1: The first stage involves writing the time series \(X\) = (\(x_{1}\)... \(x_{n}\)), length \(N\), into the reservoir. The maximum length of the series \(Nmax\) is determined by the number of elements in the reservoir matrix \(Nmax\) = \(Y\_max\times P\_max\), where \(Y\_max\) refers to the dimension of the \(Y\) vector of the dataset and \(P\_max\) refers to the dimension of the vector \(Sh\)  
Figure 3: Main steps of NNetEn calculation.  
(the first layer) of the output classifier; we used \(P\_max\) = 25 in our work [29]. For Dataset 1, \(N\_max\) = (784 + 1) \(\times\) 25 = 19,625 and for Dataset 2, \(N\_max\) = (51 + 1) \(\times\) 25 = 1300.  
In our earlier work, there are six main methods available for filling the reservoir are explored, detailed in [29]. The following conventions apply to methods M1... M6: M1--Row-wise filling with duplication; M2--Row-wise filling with an additional zero element; M3--Row-wise filling with time series stretching; M4--Column-wise filling with duplication; M5--Column-wise filling with an additional zero element (see Figure 3); M6--Column-wise filling with time series stretching.  
Stage 2: Datasets 1 and 2 are selected based on which the classification metric will be calculated.  
Stage 3: The \(Y\) vector is formed from the dataset, including a zero offset \(Y[0]\) = 1. For Dataset 1 vector dimension is \(Y\_max\) = 784 + 1, for Dataset 2 \(Y\_max\) = 51 + 1.  
Stage 4: The \(Y\) vector goes through the normalization stage in stage 4. For Dataset 1, this is the division of all elements (except \(Y[0]\)) by 255. Based on the maximum and minimum values in the original database, \(Y\) is normalized for Dataset 2.  
Stage 5: In stage 5, the vector \(Y\) has transformed into a vector \(Sh\) by multiplying it with the reservoir matrix and the input vector \(Sh\) = \(W\times Y\) (see Algorithm 1).  
Stage 6: In stage 6, Vector \(Sh\) enters the input layer of the classifier with a dimension of \(P\_max\) = 25.  
Stage 7: The vector \(Sh\) goes through the normalization stage, as described in Algorithm 1. Here is a comparison of the executable code in Delphi and Python, which uses vectorized calculations. In this array, \(Sh\_min\), \(Sh\_max\), and \(Sh\_mean\)[27] are the minimum, maximum, and average values of the vector \(Sh\) calculated across the entire database.  
Stage 8: A single-layer output classifier with ten neurons for Dataset 1 and two neurons for Dataset 2 (see Figure 2). An activation function based on logistic regression was used.  
Stage 9-Stage 10: The training and testing phases of the neural network are shown in stages 9-10. The training was carried out using the backpropagation method, with a variable number of epochs (\(Ep\)). The value of \(Ep\) is a parameter of the entropy function.  
Stage 11: In accordance with equation 6, the classification metric is transformed linearly into the NNetEn entropy based on one of three options.  
**Algorithm 1**.: Implementation of the calculation of the values of the vector \(Sh\) and its normalization in Delphi--**(a)**, Python--**(b)**.