# BiModalClust: Fused Data and Neighborhood Variation for Advanced K-Means Big Data Clustering
## 5 Experimental Evaluation
### Main Experiment Settings  
The experiments were carried out on a system running Ubuntu 22.04 64-bit, equipped with an AMD EPYC 7663 processor featuring 8 active cores and 1.46 TB of RAM (Santa Clara, CA, USA). The software environment comprised Python 3.10.11, NumPy 1.24.3, and Numba 0.57.0. To accelerate Python code execution and enable parallel processing, we leveraged Numba [24]. By compiling Python code into optimized machine code and distributing computations across multiple processors, Numba proved instrumental in enhancing the performance and efficiency of our experiments. A comprehensive experimental analysis was conducted to evaluate the improvements brought by BiModalClust compared to the state-of-the-art Big-means algorithm [2]. The Big-means algorithm has already been compared with other existing clustering approaches, so it only suffices to show that BiModalClust surpasses Big-means. Additionally, we only include K-means++ as a baseline. To ensure a fair and consistent comparison, both algorithms were tested under identical conditions, utilizing the inner parallelization technique proposed in [25; 26]. Exploring optimal parallelization strategies specifically tailored for the BiModalClust algorithm remains an open avenue for future research. The experimental evaluation was conducted on 19 publicly available datasets, with 4 of them additionally normalized to enhance the results. This brings the total number of datasets to 23. These datasets are identical to those used in [2]. Table 1 provides a detailed description of the datasets, including the number of samples and features. Additionally, Table 2 lists the corresponding download links for the datasets. All datasets are numerical, are free of missing values, and demonstrate considerable diversity in size (ranging from 7797 to 10,500,000 instances) and the number of attributes (spanning from 2 to 5000). This variability enabled us to assess BiModalClust's adaptability to a wide range of data scales. Additionally, we adopted the methodology outlined by [PERSON] et al. [5] to ensure a consistent framework for comparative analysis. \begin{table}
\begin{tabular}{l l l l l} \hline \hline
**Datasets** & **No. Instances** & **No. Attributes** & **Size** & **File Size** \\  & \(m\) & \(n\) & _m_\(\times\)_n_ & \\ \hline CORD-19 Embeddings & 599,616 & 768 & 460,505,088 & 8.84 GB \\ HEFMASS & 10,500,000 & 28 & 294,000,000 & 7.5 GB \\ US Census Data 1990 & 2,489,285 & 68 & 167,163,380 & 361 MB \\ Gisette & 13,500 & 5000 & 67,500,000 & 1525 MB \\ Music Analysis & 106,574 & 518 & 55,205,332 & 951 MB \\ Protein Homology & 145,751 & 74 & 10,785,574 & 69.6 MB \\ MiniBooNE Particle Identification & 130,064 & 50 & 6,503,200 & 91.2 MB \\ MFCCs for Speech Emotion Recognition & 85,134 & 58 & 4,937,772 & 952 MB \\ ISOLET & 7797 & 617 & 4,810,749 & 40.5 MB \\ Sensorless Drive Diagnosis & 58,809 & 48 & 2,808,432 & 25.6 MB \\ Online News Popularity & 39,644 & 58 & 2,299,352 & 24.3 MB \\ Gas Sensor Array Drift & 13,910 & 128 & 1,780,480 & 23.54 MB \\
3D Road Network & 434,874 & 3 & 1,304,622 & 20.7 MB \\ KEGG Metabolic Relation Network (Directed) & 53,413 & 20 & 1,068,260 & 7.34 MB \\ Skin Segmentation & 245,057 & 3 & 735,171 & 3.4 MB \\ Shuttle Control & 58,000 & 9 & 522,000 & 1.55 MB \\ EEG Eye State & 14,980 & 14 & 209,720 & 1.7 MB \\ Pla85900 & 85,900 & 2 & 171,800 & 1.79 MB \\ D15112 & 15,112 & 2 & 30,224 & 247 kB \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Brief description of the datasets. Clustering experiments were conducted on each dataset \(n_{exec}\) times, varying the number of clusters (\(k\)) across the values 2, 3, 5, 10, 15, 20, and 25. Each clustering execution was treated as an independent experiment. The performance of each experiment was evaluated using two metrics: the relative error (\(\varepsilon\)) and CPU time (\(t\)). The relative error measures the deviation of the algorithm's result (\(f\)) from the historical best-known result (\(f^{*}\)) using the formula \(\varepsilon=100\cdot(f-f^{*})/f^{*}\).