## 2 Methods and Materials
### Methodological Workflow  
In this study, a range of machine learning models, described in Section 2.4, were evaluated to identify the most effective model for predicting the shaft power in real-world conditions. To ensure rigorous model development and unbiased performance assessment, following established machine learning best practices for reliable model evaluation, we implement a partitioning strategy that includes all best practices. For the model development, evaluation and selection, i.e., for model training and hyperparameter optimisation (seehyperparameter configurations, in Table 3), we employed a dataset that was collected from nine vessels and comprised approximately 168K samples. The selection of hyperparameter ranges was guided by the number of input features and the specific characteristics of each model. A grid search approach was used to explore combinations, resulting in a broad range of values. Initial values were chosen based on standard practices in the literature and adjusted to reflect each algorithm's behaviour, such as model depth for neural networks and learning rate sensitivity.  
Our model development and selection process employs a two-step validation approach to maximise robustness. First, we repeatedly partition the development data into training (80%) and validation (20%) subsets, performing this step 10 times through repeated shuffling to ensure robust model training. Second, a five-fold cross-validation technique is applied within each training set to further refine the model parameters and mitigate overfitting. This comprehensive validation strategy during the development phase allows us to identify optimal model configurations while maintaining the integrity of our final evaluation.  
This methodological and rigorous workflow, depicted in Figure 2, ensures that our performance metrics reflect true generalisation ability and are reliable and unbiased.  
\begin{table}
\begin{tabular}{l l} \hline \hline
**Model** & **Hyperparameters** \\ \hline \multirow{3}{*}{**Neural Networks**} & - Activation: tanh, ReLU \\  & - Hidden layer size: 5, 10, 20, 50 \\ (NNs) & - Learning rate: 0.01, 0.1, 0.2 \\  & - Solver: adam \\ \hline \multirow{3}{*}{**Random Forests (RF)**} & - Number of estimators: 50, 100, 200 \\  & - Criterion: squared error, absolute error and Friedman MSE \\  & - Max depth: 10 \\ \hline \multirow{3}{*}{**k-Nearest Neighbors** (KNN)} & - \(p\): 1, 1.5, 2, 3 \\  & - Number of neighbours: 5, 10, 25, 50, 100, 150 \\  & - Weights: uniform, distance \\ \hline \multirow{3}{*}{**XGBoost**} & - Lambda: 1, 10 \\  & - Number of estimators: 100, 300, 500 \\  & - Learning rate: 0.01, 0.05 \\  & - Max depth: 5, 10, 20 \\ \hline \multirow{3}{*}{**LightGBM**} & - Number of leaves: 31, 50, 100 \\  & - Number of estimators: 100, 300, 500 \\  & - Learning rate: 0.01, 0.1, 0.2 \\  & - Max depth: 5, 10, 20 \\ \hline \multirow{3}{*}{**Support Vector** **Machines (SVMs)**} & - Kernel: linear \\  & - C: 0.1, 1 \\  & - Epsilon: 0.01, 0.1 \\ \hline
**Decision Trees (DTs)** & - Min samples: 2, 5, 10, 20, 50 \\ \hline \hline \end{tabular}
\end{table}
Table 3: The hyperparameters values used for fine-tuning each machine learning model during selection procedure.