{"id":22549033,"url":"https://github.com/javi-cc/python-ml-portcanto","last_synced_at":"2026-04-13T22:03:45.543Z","repository":{"id":266703144,"uuid":"899092355","full_name":"JAVI-CC/python-ml-portcanto","owner":"JAVI-CC","description":"Portcanto és un projecte de simulació d'un trajecte en bicicleta. S'ha definit 4 tipus de ciclistes que es diferencien en el temps que tarda a fer el trajecte.  L'objectiu és descobrir els 4 patrons amb l'algoritme de clustering KMeans.","archived":false,"fork":false,"pushed_at":"2024-12-06T07:06:09.000Z","size":648,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-02T10:13:35.054Z","etag":null,"topics":["clustering","docker","docker-compose","kmeans","machine-learning","mlfow","pydoc","pylint","python","scikit-learn","testing","venv"],"latest_commit_sha":null,"homepage":"","language":"Python","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/JAVI-CC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2024-12-05T15:54:39.000Z","updated_at":"2024-12-06T07:06:12.000Z","dependencies_parsed_at":"2024-12-05T17:19:56.288Z","dependency_job_id":"1623b1af-50fa-4486-9ba6-a65b1f9c6163","html_url":"https://github.com/JAVI-CC/python-ml-portcanto","commit_stats":null,"previous_names":["javi-cc/python-ml-portcanto"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JAVI-CC%2Fpython-ml-portcanto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JAVI-CC%2Fpython-ml-portcanto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JAVI-CC%2Fpython-ml-portcanto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JAVI-CC%2Fpython-ml-portcanto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JAVI-CC","download_url":"https://codeload.github.com/JAVI-CC/python-ml-portcanto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246000751,"owners_count":20707783,"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","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","docker","docker-compose","kmeans","machine-learning","mlfow","pydoc","pylint","python","scikit-learn","testing","venv"],"created_at":"2024-12-07T16:07:37.901Z","updated_at":"2026-04-13T22:03:45.500Z","avatar_url":"https://github.com/JAVI-CC.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python Machine Learning Portcanto\n\n\u003cimg src=\"logo.png\" width=\"500\" alt=\"python-ml-portcanto\"\u003e\n\n## Taula de continguts\n1. [Portcanto](#portcanto)\n2. [Execució](#run)\n3. [Docker](#docker)\n4. [Clustering](#clustering)\n5. [MLflow](#mlflow)\n6. [Documentació del codi](#docs)\n7. [Anàlisi del codi estàtic](#analisi)\n7. [Testing](#tests)\n8. [Llicència](#licence)\n\n---\n\n### Portcanto \u003ca name=\"portcanto\"\u003e\u003c/a\u003e\n**Portcanto** és un projecte de simulació d'un trajecte en bicicleta. S'ha definit 4 tipus de ciclistes que es diferencien en el temps que tarda a fer el trajecte.\n\nL'objectiu és descobrir els 4 patrons amb l'algoritme de clustering KMeans.\n\nEs vol crear dades sintètiques per poder fer un anàlisi de les dades amb IA (bàsicament un problema de clustering).\n\nConsta de dos arxius principals:\n\n- [Generar dataset](generardataset.py): Consisteix a generar diferents dades de cada tipus de ciclista i emmagatzemar totes les dades en un arxiu csv.\n\n- [Cluster ciclistes](clustersciclistes.py): Consisteix principalment a realitzar un anàlisi exploratori de les dades del dataset, generar una imatge per poder visualitzar els diferents clusters, generació d'informes, classificació de noves dades i etc.\n\nConsta també de diferents carpetes i scripts relacionats amb l'anàlisi de les dades i la solució amb IA del problema del clustering.\n\n---\n\n### Execució \u003ca name=\"run\"\u003e\u003c/a\u003e\nDescarregar i ficar-se dins del projecte:\n```\n$ git clone https://github.com/JAVI-CC/python-ml-portcanto\n\n$ cd python-ml-portcanto\n```\n\nAra pots crear un entorn virtual fent:\n```\n$ python -m venv venv\n o bé:\n$ virtualenv venv\n\n$ source venv/bin/activate\n```\n\ni tot seguit instal·lar els mòduls necessaris:\n```\n$ pip install --no-cache-dir -r requirements.txt\n```\n\nPer executar:\n```\n$ python generardataset.py\n```\n\n```\n$ python clustersciclistes.py\n```\n\n---\n\n### Docker \u003ca name=\"docker\"\u003e\u003c/a\u003e\u003cg-emoji class=\"g-emoji\" alias=\"whale\" fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/1f433.png\"\u003e🐳\u003c/g-emoji\u003e\n\n\u003cspan\u003eEnllaç del repositori de la imatge: \u003ca href=\"https://hub.docker.com/r/javi98/python-ml-portcanto\" target=\"_blank\"\u003ehttps://hub.docker.com/r/javi98/python-ml-portcanto\u003c/a\u003e\u003c/span\u003e\n\n#### Contenidors:\n* python:3.12 - ```:5000 # Interfície web MLflow```\n\n#### Execució:\n```\n$ git clone https://github.com/JAVI-CC/python-ml-portcanto\n$ cd python-ml-portcanto\n$ docker compose up -d\n$ docker compose exec app python generardataset.py\n$ docker compose exec app python clustersciclistes.py\n```\n\nUna vegada que estigui desplegat el contenidor correctament, per defecte ja es troba arrencat la interfície web de MLflow i pots accedir a la interfície web de MLflow a través de l'url: \u003ca href=\"http://localhost:5000\" target=\"_blank\"\u003ehttp://localhost:5000\u003c/a\u003e\n\n---\n\n### Clustering \u003ca name=\"clustering\"\u003e\u003c/a\u003e\n\nEn l'arxiu [clustersciclistes.py](clustersciclistes.py) es resol el problema de trobar els clústers per a les dades simulades.\n\nS'obtenen 4 clústers.\n\n![Clusters](img/grafica1.png)\n\n---\n\n### MLflow \u003ca name=\"mlflow\"\u003e\u003c/a\u003e\n\nMLflow es tracta d'una plataforma per optimitzar el desenvolupament d'aprenentatge automàtic, que inclou el seguiment d'experiments i l'ús compartit i la implementació de models.\n\nPer generar l'experiment:\n(Per defecte ja es troba generat l'experiment.)\n```\n$ python mlflowtracking-K.py\n```\n\nPer arrencar la interfície web:\n\n```\n$ mlflow ui\n```\n\nUrl per accedir a la interfície web: \u003ca href=\"http://localhost:5000\" target=\"_blank\"\u003ehttp://localhost:5000\u003c/a\u003e\n\n---\n\n### Documentació del codi \u003ca name=\"docs\"\u003e\u003c/a\u003e\nPots veure la documentació del codi generat dins del directori docs.\n * [clustersciclistes.html](docs/clustersciclistes.html)\n * [generardataset.html](docs/generardataset.html)\n\nPer generar la documentació del codi:\n(Per defecte ja es troba generat la documentació del codi.)\n```\n$ python -m pydoc -w ./generardataset.py\n$ python -m pydoc -w ./clustersciclistes.py\n o bé:\n$ python gendocs.py\n```\n\n---\n\n### Anàlisi del codi estàtic \u003ca name=\"analisi\"\u003e\u003c/a\u003e\n\nPer fer un anàlisi del codi estàtic:\n```\n$ cd pylint\n$ pylint ../generardataset.py\n$ pylint ../clustersciclistes.py\n```\n\n---\n\n### Testing \u003ca name=\"tests\"\u003e\u003c/a\u003e\n\nPer executar tots els tests del projecte:\n\n```\n$ python -m unittest discover -s tests\n```\n\n---\n\n### Llicència \u003ca name=\"licence\"\u003e\u003c/a\u003e\n**JAVI-CC** - IOC (2024)\nLlicència MIT. [LICENSE.txt](LICENSE.txt) per més detalls\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavi-cc%2Fpython-ml-portcanto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavi-cc%2Fpython-ml-portcanto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavi-cc%2Fpython-ml-portcanto/lists"}