## 5 Experiments
### Training and Testing  
The proposed approach involves five ML algorithms (decision tree, random forest, K-nearest neighbor, extreme gradient boosting, and support vector machine) to compare their detection possibilities. All algorithms were trained and tested using the dataset with training and testing percentages of 75% and 25%. The BotGRABBER framework uses the scikit-learn library-an open-source platform for MLA in Python [58]. The configuration of each used MLA relies on the appropriate set of algorithm parameters. The optimal used values of algorithm parameters are presented in Tables 6-10[59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70]. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Parameter** & **Value** & **Description** \\ \hline criterion & gini & The function to measure the quality of a split. \\ splitter & best & The strategy used to choose the split at each node. \\ max\_depth & None & The maximum depth of the tree. \\ min\_samples\_split & 3 & The minimum number of samples required to split an internal node. \\ min\_samples\_leaf & 1 & The minimum number of samples required to be at a leaf node. \\ min\_weight\_fraction\_leaf & 0.0 & The minimum weighted fraction of the sum total of weights (of all the \\ max\_features & auto & The number of features to consider when looking for the best split. \\ random\_state & RandomState instance & Controls the randomness of the estimator. \\ class\_weight & balanced & Weights associated with classes. \\ ccp\_alpha & 0.0 & Complexity parameter used for minimal cost complexity pruning. \\ \hline \hline \end{tabular}
\end{table} 
Table 6: Decision tree algorithm parameters [59]. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Parameter** & **Value** & **Description** \\ \hline n\_estimators & 100 & The number of trees in the forest. \\ criterion & gini & The function to measure the quality of a split. \\ max\_depth & None & The maximum depth of the tree. \\ min\_samples\_split & 2 & The minimum number of samples required to split an internal node. \\ \hline \hline \end{tabular}
\end{table} 
Table 7: Random forest algorithm parameters [60]. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Parameter** & **Value** & **Description** \\ \hline min\_samples\_lea & 1 & The minimum number of samples required to be at a leaf node. \\ min\_weight\_fraction\_leaf & 0.0 & The minimum weighted fraction of the sum total of weights. \\ max\_features & log\({}^{2}\) & The number of features to consider when looking for the best split. \\ class\_weight & balanced & Weights associated with classes. \\ ccp\_alpha & 0.0 & Complexity parameter used for minimal cost complexity pruning. \\ \hline \hline \end{tabular}
\end{table} 
Table 7: _Cont._ \begin{table}
\begin{tabular}{c c c} \hline \hline
**Parameter** & **Value** & **Description** \\ \hline \hline n\_neighbors & 5 & Number of neighbors. \\ weights & distance & Weight function used in prediction. \\ algorithm & kd\_tree & The algorithm used to compute the nearest neighbors. \\ leaf\_size & 30 & Leaf size passed to KDTree. \\ p & 2 & Power parameter for the Minkowski metric. \\ metric & str & The distance metric to use for the tree. \\ metric\_params & dict & The number of parallel jobs to run for the neighbors’ search. \\ \hline \hline \end{tabular}
\end{table} 
Table 8: K-Nearest Neighbor algorithm parameters [61].