{"id":51121594,"url":"https://github.com/imosudi/unsupervised-ml-kmeans-analysis","last_synced_at":"2026-06-25T03:01:16.856Z","repository":{"id":357892916,"uuid":"1238998784","full_name":"imosudi/unsupervised-ml-kmeans-analysis","owner":"imosudi","description":"K-Means clustering analysis using synthetic datasets generated with scikit-learn, including meshgrid visualisation, silhouette score evaluation, and investigation of cluster count and random seed effects.","archived":false,"fork":false,"pushed_at":"2026-05-14T19:08:55.000Z","size":1860,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-14T19:28:54.016Z","etag":null,"topics":["clustering","data-analysis","jupyter-notebook","kmeans","kmeans-clustering","machine-learning","matplotlib","python3","scikit-learn","silhouette-score","unsupervised-learning"],"latest_commit_sha":null,"homepage":"","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/imosudi.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}},"created_at":"2026-05-14T16:56:09.000Z","updated_at":"2026-05-14T19:09:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/imosudi/unsupervised-ml-kmeans-analysis","commit_stats":null,"previous_names":["imosudi/unsupervised-ml-kmeans-analysis"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/imosudi/unsupervised-ml-kmeans-analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imosudi%2Funsupervised-ml-kmeans-analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imosudi%2Funsupervised-ml-kmeans-analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imosudi%2Funsupervised-ml-kmeans-analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imosudi%2Funsupervised-ml-kmeans-analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imosudi","download_url":"https://codeload.github.com/imosudi/unsupervised-ml-kmeans-analysis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imosudi%2Funsupervised-ml-kmeans-analysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34757355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"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":["clustering","data-analysis","jupyter-notebook","kmeans","kmeans-clustering","machine-learning","matplotlib","python3","scikit-learn","silhouette-score","unsupervised-learning"],"created_at":"2026-06-25T03:01:15.665Z","updated_at":"2026-06-25T03:01:16.850Z","avatar_url":"https://github.com/imosudi.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unsupervised ML - K-Means Clustering Analysis\n\n![Python](https://img.shields.io/badge/Python-3.11+-blue?logo=python)\n![scikit-learn](https://img.shields.io/badge/scikit--learn-ML-orange?logo=scikitlearn)\n![NumPy](https://img.shields.io/badge/NumPy-Scientific_Computing-013243?logo=numpy)\n![Pandas](https://img.shields.io/badge/Pandas-Data_Analysis-150458?logo=pandas)\n![Matplotlib](https://img.shields.io/badge/Matplotlib-Visualisation-green)\n![K-Means](https://img.shields.io/badge/K--Means-Clustering-red)\n![Silhouette Score](https://img.shields.io/badge/Silhouette-Score-purple)\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Status](https://img.shields.io/badge/Status-Completed-success)\n\nThis project explores unsupervised machine learning using the K-Means clustering algorithm on synthetic datasets generated with scikit-learn. The analysis includes cluster visualisation, silhouette score evaluation, and parameter sensitivity experiments involving cluster count and random seed variation.\n\n## Deployment\n\nClone the repository and run the notebook or Python script locally.\n\n### Linux/Mac\n\n```bash\ngit clone https://github.com/imosudi/unsupervised-ml-kmeans-analysis.git\ncd unsupervised-ml-kmeans-analysis\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\n### Windows\n\n```bash\ngit clone https://github.com/imosudi/unsupervised-ml-kmeans-analysis.git\ncd unsupervised-ml-kmeans-analysis\npython -m venv venv\nvenv\\Scripts\\activate\npip install -r requirements.txt\n```\n\nRun:\n\n```bash\npython main.py\n\n```\n\nOr launch Jupyter Notebook:\n```bash\njupyter notebook\n\n```\n\n\n## Project goals\n\n- Generate synthetic datasets using `sklearn.datasets.make_classification`\n- Apply K-Means clustering on multi-class datasets\n- Visualise clustering regions using meshgrid decision boundaries\n- Evaluate clustering quality using silhouette scores\n- Analyse the impact of:\n  - Different cluster counts (`k`)\n  - Different random seeds\n- Compare clustering stability and performance\n- Strengthen practical understanding of unsupervised machine learning\n\n## Project Structure\n\n```\nunsupervised-ml-kmeans-analysis/\n├── assets/\n│   └── screenshots/          # Screenshots for the analysis report\n│       ├── task1.png\n│       ├── task3.png\n│       ├── task5_1.png\n│       └── task5_2.png\n├── doc/\n│   ├── assets/\n│   │   └── screenshots/      # Copies of screenshots for documentation\n│   ├── generate_pdf.py       # Script to generate PDF from markdown\n│   └── Unsupervised_ML_Analysis.md  # Detailed analysis report\n├── LICENSE\n├── main.ipynb               # Jupyter notebook with the analysis\n├── main.py                  # Python script version\n├── README.md                # This file\n└── requirements.txt         # Python dependencies\n```\n\n## Documentation\n\nThe detailed analysis report is available in `doc/Unsupervised_ML_Analysis.md`. To generate a PDF version:\n\n```bash\ncd doc\npython generate_pdf.py\n```\n\nThis will create `Unsupervised_ML_Analysis.pdf` in the `doc/` directory.\n\nThis project is licensed under the **MIT license**. See [LICENSE](./LICENSE) for details.\n\n## Author\n\n\n**Mosudi Isiaka O.**  \n![Email](https://img.shields.io/badge/Email-Contact-blue?logo=gmail) [mosudi.isiaka@gmail.com](mailto:mosudi.isiaka@gmail.com)  \n![GitHub](https://img.shields.io/badge/GitHub-imosudi-181717?logo=github) [https://github.com/imosudi](https://github.com/imosudi)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimosudi%2Funsupervised-ml-kmeans-analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimosudi%2Funsupervised-ml-kmeans-analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimosudi%2Funsupervised-ml-kmeans-analysis/lists"}