## 5 System Evaluation  
### CPU Time Measurements  
Addressing the resource-intensive nature of partition-based clustering, particularly in terms of CPU and RAM utilization, necessitated the strategic integration of the Pandas library. By leveraging this library, kClusterHub adeptly manages the intricacies associated with processing large datasets. It is important to note that the Python scikit-learn and kmodes libraries were pivotal in facilitating kClusterHub. The experiments were carried out on a virtual machine running Debian GNU/Linux. The virtual machine was equipped with a 6-core CPU operating at 2.5 GHz and 4 GB of RAM. This virtual machine was hosted by a Citrix-hypervisor virtualization server. To evaluate the efficacy of kClusterHub, an empirical analysis was conducted utilizing twelve diverse datasets sourced from both the keel dataset repository [35] ([[https://sci2s.ugres/keel/datasets.php](https://sci2s.ugres/keel/datasets.php)]([https://sci2s.ugres/keel/datasets.php](https://sci2s.ugres/keel/datasets.php)), accessed on 10 October 2023) and Kaggle ([[https://www.kaggle.com/datasets](https://www.kaggle.com/datasets)]([https://www.kaggle.com/datasets](https://www.kaggle.com/datasets)), accessed on 10 October 2023). The experimental assessments encompassed the application of the elbow method to identify the optimal number of clusters in the range [1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20], alongside the execution of the partition-based clustering algorithms employing the recommended number of clusters derived from the Elbow method. Considering the experimental results, as presented in Table 2, it becomes evident that the execution times are linked to the size (rows and columns) of each dataset. It is noteworthy that the elbow method's execution entails a more time-intensive process, compared to the final execution of the partition-based algorithm. This discrepancy can be attributed to the fact that the elbow method necessitates multiple clustering tasks (ranging from k = 1 to k = 20 in our experimentation), ultimately computing the appropriate clustering metric (WCSS, Hamming or mixed distance) for each clustering iteration. As mentioned before, the k-modes and k-prototypes algorithms, which are part of the k-modes python library, appear to have slower performance compared to scikit-learn's k-means algorithm. This performance disparity is particularly noticeable when working with large datasets. To address this issue, we adopt a tactic of utilizing a smaller sample subset of the data when applying the elbow method with k-modes and k-prototypes. By doing so, we \begin{table}
\begin{tabular}{c c c c c c c c c} \hline \hline \multirow{2}{*}{**Dataset**} & **Size** & **Number** & **Number of** & **Number of** & **Number of** & **Time for** & & **Suggested** & **Time for** \\  & **(kb)** & **of** & **Numical** & **Categorical** & **Columns** & & **(k = 20)** & **k** & **Clustering** \\ \hline penbased & 538 & 10,992 & 16 & 0 & k-means & 1.06 s & 6 & 0.24 s \\ \hline letter & 716 & 20,000 & 16 & 0 & k-means & 2.49 s & 7 & 0.35 s \\ \hline magic & 1462 & 19,020 & 10 & 0 & k-means & 1.67 s & 5 & 0.23 s \\ \hline texture & 1495 & 5500 & 40 & 0 & k-means & 1.02 s & 4 & 0.45 s \\ \hline shuttle & 1559 & 57,999 & 9 & 0 & k-means & 3.08 s & 5 & 0.31 s \\ \hline poker & 24,563 & 1,025,009 & 10 & 0 & k-means & 72 s & 6 & 23.25 s \\ \hline car & 53 & 1728 & 0 & 7 & k-modes & 36.5 s & 5 & 1.5 s \\ \hline bank & 450 & 4521 & 0 & 10 & k-modes & 55.6 s & 4 & 8.95 s \\ \hline nursery & 1020 & 12,960 & 0 & 9 & k-modes & 25.2 s & 6 & 14.8 s \\ \hline marketing & \multirow{2}{*}{222} & \multirow{2}{*}{2240} & \multirow{2}{*}{7} & \multirow{2}{*}{3} & \multirow{2}{*}{k-prototypes} & \multirow{2}{*}{188.9 s} & \multirow{2}{*}{6} & \multirow{2}{*}{18.5 s} \\ Data & & & & & & & & \\ \hline germanCC & 80 & 1000 & 7 & 13 & k-prototypes & 320.6 s & 6 & 11.4 s \\ \hline abalone & 192 & 4174 & 7 & 1 & k-prototypes & 116.5 s & 3 & 18.8 s \\ \hline \hline \end{tabular}
\end{table} 
Table 2: CPU time measurements.