## 2 Materials and Methods
### Classification Models and Data Splitting  
For the development of the classification system, feature extraction was performed as previously described, followed by the preparation of the resulting databases. Data validation was carried out using a stratified train-test split, distributing 20% of the data for testing and 80% for training. This stratification ensured that both groups contained proportional amounts of samples labeled DEPRESSIVE or NORMAL, maintaining equal proportions within each subset. Four different machine learning models were tested, but for the scope of this article, we will only delve into the three best performing models in each of the databases. The models of interest are Logistic Regression, Random Forest, Multilayer Perceptron, and AdaBoost Classifier. These four models were constructed using the Scikit-learn library in Python ([[https://scikit-learn.org/stable/](https://scikit-learn.org/stable/)]([https://scikit-learn.org/stable/](https://scikit-learn.org/stable/))).  
In addition to the partitioning of data into training and testing subsets, a cross-validation methodology was employed to address potential overfitting in the outcomes. Specifically, a stratified \(k\)-fold technique was executed on the models, and the optimal results were systematically chosen for presentation. Considering the magnitude of the datasets, a five-fold cross-validation was deemed appropriate for all analyzed datasets. This procedure was conducted iteratively to ascertain the percentages of the metrics to be reported, leveraging the Scikit-learn library in Python.  
Each model has a number of hyperparameters that can be modified to enhance performance. In this case, a grid search algorithm was used to tune the best hyperparameters for each model. The models used were logistic regression, random forest, multilayer perceptron, and AdaBoost classifier. Logistic regression, which is specifically designed for binary classification problems, utilizes the logistic function as its cost function to predict the probability that an instance belongs to one of two classes. For logistic regression, the default program values were used without modifications. In contrast, random forest, an ensemble learning method, constructs multiple decision trees during training and outputs the mode of the classes (classification) or the mean prediction (regression) of the individual trees. Parameters such as \"random state\" were varied from 1 to 10, the \"criterion\" for evaluating the quality of node splitting was adjusted using \"Gini\" and \"Entropy\", and the \"n_estimators\" parameter, defining the number of trees, was varied from 2 to 30.  
The multilayer perceptron (MLP), a type of artificial neural network consisting of at least three layers of nodes (input layer, hidden layer, and output layer), is used for complex pattern recognition and learning non-linear relationships. The \"random state\" parameter was adjusted with values from 1 to 10 to control the weight optimization system, the \"solver\" parameter was modified using \"bfgs\", \"sgd\", and \"Adam\", and the number of neurons was chosen using \"hidden_layer_sizes\" with variations from 5 to 30. Lastly, AdaBoost (Adaptive Boosting) is a meta-estimator that starts by fitting a classifier on the original dataset and then fits additional copies of the classifier on the same dataset. However, it adjusts the weights of incorrectly classified instances so that subsequent classifiers focus more on these difficult cases. An initial decision tree estimator was used, the \"random state\" parameter was modified with values from 1 to 10, and the \"n_estimators\" values, determining the number of estimators to use, ranged from 2 to 20.