{"id":31763930,"url":"https://github.com/quantum-software-development/9-datamining_k-means_clustering_presentation","last_synced_at":"2025-10-09T23:38:54.738Z","repository":{"id":316446696,"uuid":"1063420969","full_name":"Quantum-Software-Development/9-DataMining_K-Means_Clustering_Presentation","owner":"Quantum-Software-Development","description":"9- DataMining -Use of the KMeans Algorithm Presentation","archived":false,"fork":false,"pushed_at":"2025-10-01T20:12:50.000Z","size":5188,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-01T22:08:14.749Z","etag":null,"topics":["grouping","kmeans-algorithm","kmeans-clustering"],"latest_commit_sha":null,"homepage":"https://github.com/Quantum-Software-Development/9-DataMining--K-Means_Clustering_Presentation","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quantum-Software-Development.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"Quantum-Software-Development","Custom":"https://github.com/sponsors/Quantum-Software-Development/card"}},"created_at":"2025-09-24T15:49:17.000Z","updated_at":"2025-10-01T20:12:52.000Z","dependencies_parsed_at":"2025-10-01T22:08:20.518Z","dependency_job_id":null,"html_url":"https://github.com/Quantum-Software-Development/9-DataMining_K-Means_Clustering_Presentation","commit_stats":null,"previous_names":["quantum-software-development/9-datamining-xxxxxx","quantum-software-development/9-datamining--k-means_clustering_presentation","quantum-software-development/9-datamining_k-means_clustering_presentation"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Quantum-Software-Development/9-DataMining_K-Means_Clustering_Presentation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-Software-Development%2F9-DataMining_K-Means_Clustering_Presentation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-Software-Development%2F9-DataMining_K-Means_Clustering_Presentation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-Software-Development%2F9-DataMining_K-Means_Clustering_Presentation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-Software-Development%2F9-DataMining_K-Means_Clustering_Presentation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quantum-Software-Development","download_url":"https://codeload.github.com/Quantum-Software-Development/9-DataMining_K-Means_Clustering_Presentation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-Software-Development%2F9-DataMining_K-Means_Clustering_Presentation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002311,"owners_count":26083340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grouping","kmeans-algorithm","kmeans-clustering"],"created_at":"2025-10-09T23:38:52.664Z","updated_at":"2025-10-09T23:38:54.722Z","avatar_url":"https://github.com/Quantum-Software-Development.png","language":"Jupyter Notebook","funding_links":["https://github.com/sponsors/Quantum-Software-Development","https://github.com/sponsors/Quantum-Software-Development/card"],"categories":[],"sub_categories":[],"readme":"\n\u003cbr\u003e\n\n**\\[[🇧🇷 Português](README.pt_BR.md)\\] \\[**[🇺🇸 English](README.md)**\\]**\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n# 9- [Data Mining]()  / [ K-Means Clustering Repository Presentation]()\n\n\n\n\n\u003c!-- ======================================= Start DEFAULT HEADER ===========================================  --\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n[**Institution:**]() Pontifical Catholic University of São Paulo (PUC-SP)  \n[**School:**]() Faculty of Interdisciplinary Studies  \n[**Program:**]() Humanistic AI and Data Science\n[**Semester:**]() 2nd Semester 2025  \nProfessor:  [***Professor Doctor in Mathematics Daniel Rodrigues da Silva***](https://www.linkedin.com/in/daniel-rodrigues-048654a5/)\n\n\u003cbr\u003e\u003cbr\u003e\n\n#### \u003cp align=\"center\"\u003e [![Sponsor Quantum Software Development](https://img.shields.io/badge/Sponsor-Quantum%20Software%20Development-brightgreen?logo=GitHub)](https://github.com/sponsors/Quantum-Software-Development)\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003c!--Confidentiality statement --\u003e\n\n#\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\u003e [!IMPORTANT]\n\u003e \n\u003e ⚠️ Heads Up\n\u003e\n\u003e * Projects and deliverables may be made [publicly available]() whenever possible.\n\u003e * The course emphasizes [**practical, hands-on experience**]() with real datasets to simulate professional consulting scenarios in the fields of **Data Analysis and Data Mining** for partner organizations and institutions affiliated with the university.\n\u003e * All activities comply with the [**academic and ethical guidelines of PUC-SP**]().\n\u003e * Any content not authorized for public disclosure will remain [**confidential**]() and securely stored in [private repositories]().  \n\u003e\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n#\n\n\u003c!--END--\u003e\n\n\n\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\n\n\u003c!-- PUC HEADER GIF\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/0d6324da-9468-455e-b8d1-2cce8bb63b06\" /\u003e\n--\u003e\n\n\n\u003c!-- video presentation --\u003e\n\n\n##### 🎶 Prelude Suite no.1 (J. S. Bach) - [Sound Design Remix]()\n\nhttps://github.com/user-attachments/assets/4ccd316b-74a1-4bae-9bc7-1c705be80498\n\n####  📺 For better resolution, watch the video on [YouTube.](https://youtu.be/_ytC6S4oDbM)\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\u003e [!TIP]\n\u003e \n\u003e  This repository is a review of the Statistics course from the undergraduate program Humanities, AI and Data Science at PUC-SP.\n\u003e\n\u003e ### ☞ **Access Data Mining [Main Repository](https://github.com/Quantum-Software-Development/1-Main_DataMining_Repository)**\n\u003e\n\u003e\n\n\n\u003c!-- =======================================END DEFAULT HEADER ===========================================  --\u003e\n\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\n\n# [K-Means Algorithm - Clustering - Presentation]()\n\nThis repository contains the full presentation and step-by-step application of the K-Means clustering algorithm. The goal is to demonstrate the process from data preprocessing, through model evaluation, to the final conclusion about the optimal number of clusters, based on an included PDF presentation. This provides a comprehensive, practical example of unsupervised clustering for educational and analytical purposes.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n[ K-Means Clustering Repository Presentation]()\n\nThis repository contains the full presentation and step-by-step application of the K-Means clustering algorithm. The goal is to demonstrate the process from data preprocessing, through model evaluation, to the final conclusion about the optimal number of clusters, based on an included PDF presentation. This provides a comprehensive, practical example of unsupervised clustering for educational and analytical purposes.\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [What is K-Means?]()\n\nK-Means is a popular unsupervised machine learning algorithm used for clustering data. Its primary purpose is to partition a dataset into a pre-specified number of distinct, non-overlapping groups called \"clusters.\" The \"K\" in K-Means refers to the number of clusters the user wants to identify.\n\nThe algorithm works by grouping data points that are similar to each other based on a distance metric, usually Euclidean distance. Each cluster is represented by its centroid, which is the mean position of all points within that cluster. K-Means iteratively adjusts the centroids and reassigns points to clusters until the clusters are stable or a set number of iterations is reached.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Type of Algorithm]()\n\nK-Means is an example of a \"hard\" clustering algorithm because each data point belongs to exactly one cluster. It is an iterative centroid-based clustering method that aims to minimize the within-cluster variance (sum of squared distances from points to their cluster centroid).\n\nBecause it is unsupervised learning, it does not require labeled data.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [When to Use K-Means]()\n\n- When you have a dataset without labels and want to discover natural groupings based on feature similarities.\n- When clusters are expected to be spherical or roughly equally sized, as K-Means works best in these cases.\n- When you know or can estimate the number of clusters (K) in advance.\n- When computational efficiency is important, as K-Means is relatively fast and scalable to large datasets.\n- For applications like market segmentation, image compression, document clustering, and pattern recognition.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [When Not to Use K-Means]()\n\n- If clusters in data are non-spherical, overlapping, or have very different sizes or densities, K-Means may not perform well.\n- When the number of clusters K is not known and difficult to estimate.\n- When the data contains many outliers, since K-Means is sensitive to outliers which can distort centroids.\n- For categorical or non-numeric data without proper encoding or different distance metrics.\n- When clusters have complex shapes that cannot be approximated well by centroids.\n\nIn these cases, other clustering methods such as DBSCAN, hierarchical clustering, or Gaussian mixture models might be more appropriate.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Data Preprocessing]()\n\nThe original dataset consisted of multiple columns, but only “Column1” and “Column2” were used for the analysis. The column \"Unnamed: 0\", which was merely an index without analytical value, was dropped. The final dataset contains 2 columns and 9,308 rows.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Data Exploration]()\n\nA plot of the original data was constructed to explore its behavior visually. The visual inspection suggested the data was suitable for clustering using the K-Means model. The initial hypothesis was the presence of 4 to 6 groups. However, this estimate was to be confirmed later through the elbow method and silhouette analysis.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n### [Original Data Plot]()\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://github.com/user-attachments/assets/085453d4-d6b1-49eb-9373-531c7510128b\" /\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\n## [Data Preprocessing]()\n\nThere were 2 missing values per column (9,306 non-null values out of 9,308). Since the K-Means algorithm cannot handle missing values, these were imputed using the mean of each respective column to enable modeling.\n\nThe dataset initially contained 3 columns, but only \"Column1\" and \"Column2\" were used after dropping the \"Unnamed: 0\" index column, resulting in 2 columns and 9,308 rows.\n\nThe data plot shows that the dataset is suitable for clustering, with an initial hypothesis of 4 to 6 groups to be validated later using the elbow method and silhouette index.\n\nNotably, there are 2 missing values per column, which were imputed using the mean of each column, as K-Means does not handle missing values.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n```python\ndf['Column1'] = df['Column1'].fillna(df['Column1'].mean())  \\# Fill NaNs with mean\ndf['Column2'] = df['Column2'].fillna(df['Column2'].mean())  \\# Fill NaNs with mean\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\n## [Duplicate Values]()\n\nDuplicate rows were checked in each column to avoid redundant data points in clustering.\n\nCode was used to list duplicates in “Column1” and “Column2” separately:\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n```python\ndf = df.drop_duplicates(subset='Column1', keep='first')\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\nThis resulted in 9,299 rows and 2 columns ready for further processing.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Data Normalization]()\n\nK-Means clustering is sensitive to the scale of features since it relies on distance calculations. To avoid magnitude bias, the data was normalized to a [0,1] scale using MinMaxScaler.\n\n\n```python\nfrom sklearn.preprocessing import MinMaxScaler\n\nscaler = MinMaxScaler()\nstandard_df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)\n```\n\n\nThe normalized dataset had minimum values of 0 and maximum values of 1 for both columns, confirming correct scaling.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Determining the Number of Clusters (Choosing K)]()\n\n\u003cbr\u003e\n\n### The Elbow Method\n\nThe Elbow Method analyzes the total within-cluster sum of squares (inertia) for different values of K (number of clusters). The goal is to identify the \"elbow\" point where the inertia reduction rate sharply declines, indicating an optimal K.\n\nThe script runs KMeans clustering for K from 2 to 10 and stores the inertia values:\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n```python\nfrom sklearn.cluster import KMeans\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\ninertia_values = []\nfor k in range(2, 11):\nkmeans = KMeans(n_clusters=k, random_state=42)\ninertia_values.append(kmeans.fit(standard_df).inertia_)\n\nplt.figure(figsize=(10, 6))\nsns.lineplot(x=range(2, 11), y=inertia_values, marker='o')\n\nplt.gca().spines['top'].set_visible(False)\nplt.gca().spines['right'].set_visible(False)\nplt.gca().spines['left'].set_visible(False)\n\nplt.title('Elbow Method')\nplt.xlabel('Number of clusters (k)')\nplt.ylabel('Inertia')\n\nplt.axvline(x=3, color='\\#D86565', linestyle='--')  \\# Candidate K=3\nplt.axvline(x=5, color='\\#D86565', linestyle='--')  \\# Candidate K=5\n\nplt.show()\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\n### [Elbow Plot Analysis]()\n\n- There is a sharp drop in inertia from \\(K=2\\) to \\(K=3\\).\n- The decrease continues but less steep until \\(K=5\\), after which the curve flattens.\n- The plot suggests two potential \"elbows\" at \\(K=3\\) and \\(K=5\\), indicating ambiguity in choosing between these two values solely based on the elbow method.\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://github.com/user-attachments/assets/73998bea-efe5-4d72-8f4b-fa25b021fc80\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Silhouette Score Evaluation]()\n\nThe silhouette score is a metric that evaluates cluster quality by assessing how similar each point is to its own cluster compared to other clusters. Scores range from -1 to 1, where a high positive score indicates well-separated, coherent clusters.\n\nThe silhouette scores were calculated for \\(K=3, 4, 5\\):\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n```python\nfrom sklearn.metrics import silhouette_score\nimport pandas as pd\n\nscores = []\nfor k in :\nkmeans = KMeans(n_clusters=k, random_state=43)\nlabels = kmeans.fit_predict(standard_df)\nscores.append(silhouette_score(standard_df, labels))\n\npd.DataFrame({'K': , 'Silhouette Score': scores})\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n| [K]() | [Silhouette Score]() |\n|---|------------------|\n| 3 | 0.667            |\n| 4 | 0.700            |\n| 5 | 0.671            |\n\n\n\n\u003cbr\u003e\n\nThe silhouette score clearly favors \\(K=4\\), showing the best balance of cluster cohesion and separation among tested values.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Visual Cluster Analysis]()\n\nScatter plots of clusters for \\(K=3\\), \\(K=4\\), and \\(K=5\\) were generated, including marked centroids, for intuitive visual evaluation.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n```python\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(3, 1, figsize=(14, 20))\nfor ax, k in zip(axes, ):\nkmeans = KMeans(n_clusters=k, random_state=43)\nkmeans.fit(standard_df)\n\n    data_with_clusters = standard_df.copy()\n    data_with_clusters['Cluster'] = kmeans.labels_\n    \n    sns.scatterplot(data=data_with_clusters, x='Column1', y='Column2', hue='Cluster', palette='Set2', legend='full', ax=ax)\n    sns.scatterplot(x=kmeans.cluster_centers_[:, 0], y=kmeans.cluster_centers_[:, 1], s=150, color='black', marker='X', label='Centroids', ax=ax)\n    \n    ax.set_title(f'K = {k}')\n    ax.set_xlabel('Column 1')\n    ax.set_ylabel('Column 2')\n    ax.legend(loc='upper left')\n    \n    ax.spines['top'].set_visible(False)\n    ax.spines['right'].set_visible(False)\n    ax.spines['left'].set_visible(False)\n    ax.grid(axis='y', linestyle='--', alpha=0.7)\n    plt.show()\n```\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://github.com/user-attachments/assets/4846f376-9899-44d2-a17e-40adcda974a1\" /\u003c\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Visual Analysis of Clusters]()\n\n\u003cbr\u003e\n\n- [**K=3:**]() The clustering appears reasonable overall, but one large cluster (orange) on the left looks extensive and seems to contain two distinct “clouds” of points that could be separated better.\n\n- *[*K=5:**]() This splits the large orange cluster from K=3 into two smaller clusters (orange and light green). This captures some substructure but the separation among other clusters may not be as optimized.\n\n- [**K=4:**]() Appears most natural and interpretable. Clearly separates the four main visible groups in the data. Each cluster is dense and well-defined. For example, it distinguishes the upper-middle group (pink) from the right group (teal), which K=3 does not.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Cluster Descriptive Statistics (for K=4)]()\n\nDescriptive statistics were computed per cluster to characterize their properties quantitatively:\n\n\u003cbr\u003e\n\n| [Cluster]() | [Count]() | [Mean Column1]() | [Mean Column2]() |\n|---------|-------|--------------|--------------|\n| 0       | 1329  | 8.19         | 6.10         |\n| 1       | 5311  | -4.53        | -4.98        |\n| 2       | 1331  | 8.93         | -8.13        |\n| 3       | 1328  | 0.35         | 9.58         |\n\n\n\u003cbr\u003e\n\nThese statistics help understand the spatial distribution and size of each cluster in feature space.\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Final Conclusion]()\n\n- The Elbow Method was inconclusive, pointing to \\(K=3\\) or \\(K=5\\) as possible choices without a definitive answer.\n- The silhouette score provided a clear quantitative preference for \\(K=4\\), with the highest score of 0.699.\n- Visual inspection of cluster plots confirmed that \\(K=4\\) produced the most intuitive and clearly separated clusters, aligning well with the spatial data structure.\n- Therefore, the decision to proceed with K-Means using \\(K=4\\) clusters is well supported, combining strong evaluation metrics with logical and interpretable visual results.\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Summaryn]()\n\nThis repository and its accompanying presentation PDF provide a full, practical example of using the K-Means clustering algorithm, starting from data cleaning and preprocessing, through determination of the optimal number of clusters by multiple methods, and ending with qualitative and quantitative validation of the results.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## 21-  [Our Crew:]()\n\n\n- 👨🏽‍🚀 **Andson Ribeiro** - [Slide into my inbox]()\n\n- 👩🏻‍🚀 **Fabiana ⚡️ Campanari** - [Shoot me an email](mailto:fabicampanari@proton.me)\n\n- 👨🏽‍🚀  **José Augusto de Souza Oliveira**  - [email]()\n\n- 🧑🏼‍🚀 **Luan Fabiano**  - [email]()\n\n- 👨🏽‍🚀 **Pedro Barrenco**  - [email]()\n  \n- 🧑🏼‍🚀 **Pedro Vyctor** - [Hit me up by email](mailto:pedro.vyctor00@gmail.com)\n\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\u003c!-- ========================== [Bibliographr ====================  --\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## [Bibliography]()\n\n\n[1](). **Castro, L. N. \u0026 Ferrari, D. G.** (2016). *Introdução à mineração de dados: conceitos básicos, algoritmos e aplicações*. Saraiva.\n\n[2](). **Ferreira, A. C. P. L. et al.** (2024). *Inteligência Artificial - Uma Abordagem de Aprendizado de Máquina*. 2nd Ed. LTC.\n\n[3](). **Larson \u0026 Farber** (2015). *Estatística Aplicada*. Pearson.\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\u003c!-- ======================================= Start Footer ===========================================  --\u003e\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n## 💌 [Let the data flow... Ping Me !](mailto:fabicampanari@proton.me)\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\n#### \u003cp align=\"center\"\u003e  🛸๋ My Contacts [Hub](https://linktr.ee/fabianacampanari)\n\n\n\u003cbr\u003e\n\n### \u003cp align=\"center\"\u003e \u003cimg src=\"https://github.com/user-attachments/assets/517fc573-7607-4c5d-82a7-38383cc0537d\" /\u003e\n\n\n\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e  ────────────── 🔭⋆ ──────────────\n\n\n\u003cp align=\"center\"\u003e ➣➢➤ \u003ca href=\"#top\"\u003eBack to Top \u003c/a\u003e\n\n\u003c!--\n\u003cp align=\"center\"\u003e  ────────────── ✦ ──────────────\n--\u003e\n\n\n\n\u003c!-- Programmers and artists are the only professionals whose hobby is their profession.\"\n\n\" I love people who are committed to transforming the world \"\n\n\" I'm big fan of those who are making waves in the world! \"\n\n##### \u003cp align=\"center\"\u003e( Rafael Lain ) \u003c/p\u003e   --\u003e\n\n#\n\n###### \u003cp align=\"center\"\u003e Copyright 2025 Quantum Software Development. Code released under the [MIT License license.](https://github.com/Quantum-Software-Development/Math/blob/3bf8270ca09d3848f2bf22f9ac89368e52a2fb66/LICENSE)\n\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantum-software-development%2F9-datamining_k-means_clustering_presentation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquantum-software-development%2F9-datamining_k-means_clustering_presentation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantum-software-development%2F9-datamining_k-means_clustering_presentation/lists"}