{"id":303801,"name":"Air Quality Forecast","description":"This end-to-end machine learning collaboration project is used to predict ozone and nitrogen dioxide levels in Utrecht as a form of timeseries regression.","url":"https://github.com/atodorov284/air-quality-forecast","last_synced_at":"2026-05-15T00:30:21.819Z","repository":{"id":255656249,"uuid":"853295546","full_name":"atodorov284/air-quality-forecast","owner":"atodorov284","description":"This end-to-end machine learning collaboration project is used to predict ozone and nitrogen dioxide levels in Utrecht as a form of timeseries regression. It was developed in the course Machine Learning for Industry at the University of Groningen.","archived":false,"fork":false,"pushed_at":"2024-12-25T08:25:20.000Z","size":77635,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"deploy","last_synced_at":"2026-05-02T19:04:37.932Z","etag":null,"topics":[],"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/atodorov284.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}},"created_at":"2024-09-06T11:27:31.000Z","updated_at":"2026-01-22T17:03:30.000Z","dependencies_parsed_at":"2024-10-25T10:53:22.294Z","dependency_job_id":"d6809940-753d-4951-ad6d-e18214335c67","html_url":"https://github.com/atodorov284/air-quality-forecast","commit_stats":{"total_commits":642,"total_committers":3,"mean_commits":214.0,"dds":"0.12461059190031154","last_synced_commit":"ab81cb27d98078ddce265a22aefd5a580369c875"},"previous_names":["atodorov284/air-quality-forecast"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/atodorov284/air-quality-forecast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atodorov284","download_url":"https://codeload.github.com/atodorov284/air-quality-forecast/tar.gz/refs/heads/deploy","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32711965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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"}},"owner":{"login":"atodorov284","name":null,"uuid":"62033868","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/62033868?v=4","repositories_count":2,"last_synced_at":"2023-04-25T12:54:54.367Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/atodorov284","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-04-25T12:54:54.374Z","updated_at":"2023-04-25T12:54:54.374Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atodorov284","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atodorov284/repositories"},"packages":[],"commits":{"id":5580687,"full_name":"atodorov284/air-quality-forecast","default_branch":"deploy","total_commits":642,"total_committers":3,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":214.0,"dds":0.12461059190031154,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-05-10T03:15:02.058Z","last_synced_commit":"ab81cb27d98078ddce265a22aefd5a580369c875","created_at":"2024-11-14T00:13:39.643Z","updated_at":"2026-05-10T03:15:01.989Z","committers":[{"name":"WorkflowBotAlex","email":"atodorov284@gmail.com","login":"atodorov284","count":562},{"name":"03chrisk","email":"chris.kobriger@gmail.com","login":"03chrisk","count":57},{"name":"LukaszSawala","email":"lukaszsawala2003@gmail.com","login":"LukaszSawala","count":23}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-10T00:00:08.421Z","repositories_count":6232510,"commits_count":895317940,"contributors_count":34897236,"owners_count":1151501,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"atodorov284/air-quality-forecast","html_url":"https://github.com/atodorov284/air-quality-forecast","last_synced_at":"2026-02-11T04:01:52.628Z","status":"error","issues_count":0,"pull_requests_count":7,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":8933.142857142857,"issues_closed_count":0,"pull_requests_closed_count":7,"pull_request_authors_count":1,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":6,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":7,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":8933.142857142857,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":6,"created_at":"2024-11-14T00:13:48.902Z","updated_at":"2026-02-11T04:01:52.629Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/atodorov284%2Fair-quality-forecast/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"OWNER":1},"pull_request_author_associations_count":{"OWNER":13},"issue_authors":{"atodorov284":1},"pull_request_authors":{"atodorov284":13},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-13T00:00:11.310Z","repositories_count":14586304,"issues_count":34342228,"pull_requests_count":112446051,"authors_count":11260142,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"atodorov284","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/atodorov284"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":3,"PullRequestEvent":6,"ForkEvent":2,"WatchEvent":4,"PushEvent":362,"CreateEvent":1},"last_year":{"ForkEvent":1,"WatchEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/running.yml","sha":null,"kind":"manifest","created_at":"2024-09-06T15:35:18.225Z","updated_at":"2024-09-06T15:35:18.225Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/.github/workflows/running.yml","dependencies":[{"id":20004369717,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/style.yml","sha":null,"kind":"manifest","created_at":"2024-09-06T15:35:19.159Z","updated_at":"2024-09-06T15:35:19.159Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/.github/workflows/style.yml","dependencies":[{"id":20004370107,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":20004370108,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":20004370109,"package_name":"suo/flake8-github-action","ecosystem":"actions","requirements":"releases/v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-09-06T15:35:22.565Z","updated_at":"2024-09-06T15:35:22.565Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/pyproject.toml","dependencies":[]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2024-09-06T15:35:23.322Z","updated_at":"2024-09-06T15:35:23.322Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/requirements.txt","dependencies":[{"id":20004370177,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:20.749Z","updated_at":"2024-10-20T01:12:20.749Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/Dockerfile","dependencies":[{"id":20292588219,"package_name":"python","ecosystem":"docker","requirements":"3-slim","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/146369756112246655/6f1b848cc06f4bb0bc7362cc7115f6a5/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:21.661Z","updated_at":"2024-10-20T01:12:21.661Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/146369756112246655/6f1b848cc06f4bb0bc7362cc7115f6a5/artifacts/model/requirements.txt","dependencies":[{"id":20292589596,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589597,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589598,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589599,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589600,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589601,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589602,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/146369756112246655/75504635158f410eb328c9b66cafcbd2/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:22.272Z","updated_at":"2024-10-20T01:12:22.272Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/146369756112246655/75504635158f410eb328c9b66cafcbd2/artifacts/model/requirements.txt","dependencies":[{"id":20292589603,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589604,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589605,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589606,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589607,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589608,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589609,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292589615,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/146369756112246655/b33081c79d9d476da56015976d4ebd46/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:22.752Z","updated_at":"2024-10-20T01:12:22.752Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/146369756112246655/b33081c79d9d476da56015976d4ebd46/artifacts/model/requirements.txt","dependencies":[{"id":20292589635,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589636,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589637,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589638,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589639,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589640,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589641,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/146369756112246655/d55b4821b4974c04aeb9bb278c16e511/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:22.900Z","updated_at":"2024-10-20T01:12:22.900Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/146369756112246655/d55b4821b4974c04aeb9bb278c16e511/artifacts/model/requirements.txt","dependencies":[{"id":20292589684,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589685,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589686,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589687,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589688,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589689,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589690,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/146369756112246655/e7a15b20d5ea4ab9993de2ee987a3d7e/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:23.176Z","updated_at":"2024-10-20T01:12:23.176Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/146369756112246655/e7a15b20d5ea4ab9993de2ee987a3d7e/artifacts/model/requirements.txt","dependencies":[{"id":20292589711,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589712,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589713,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589714,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589715,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589716,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589717,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/146369756112246655/f975ffd80c794779a8445b2bb23687f5/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:23.293Z","updated_at":"2024-10-20T01:12:23.293Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/146369756112246655/f975ffd80c794779a8445b2bb23687f5/artifacts/model/requirements.txt","dependencies":[{"id":20292589738,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589739,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589740,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589741,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589742,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589743,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589744,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292589745,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/366942821633260301/0f99ee9734a343f0a27bcd766e3ab1b3/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:23.611Z","updated_at":"2024-10-20T01:12:23.611Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/366942821633260301/0f99ee9734a343f0a27bcd766e3ab1b3/artifacts/model/requirements.txt","dependencies":[{"id":20292589775,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292589776,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292589777,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292589778,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292589779,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292589780,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292589781,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292589782,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/366942821633260301/49c4d16d69124268880814c139255f48/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:23.882Z","updated_at":"2024-10-20T01:12:23.882Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/366942821633260301/49c4d16d69124268880814c139255f48/artifacts/model/requirements.txt","dependencies":[{"id":20292590137,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590138,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590139,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590140,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590141,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590142,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false},{"id":20292590143,"package_name":"xgboost","ecosystem":"pypi","requirements":"==2.1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/366942821633260301/58eb8390ad164113b3c869bc59d343b2/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.218Z","updated_at":"2024-10-20T01:12:24.218Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/366942821633260301/58eb8390ad164113b3c869bc59d343b2/artifacts/model/requirements.txt","dependencies":[{"id":20292590184,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590185,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590186,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590187,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590188,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590189,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false},{"id":20292590190,"package_name":"xgboost","ecosystem":"pypi","requirements":"==2.1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/366942821633260301/6370e43914f74bd5957c6070d1f219d3/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.400Z","updated_at":"2024-10-20T01:12:24.400Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/366942821633260301/6370e43914f74bd5957c6070d1f219d3/artifacts/model/requirements.txt","dependencies":[{"id":20292590193,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590194,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590195,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590196,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590197,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590198,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false},{"id":20292590199,"package_name":"xgboost","ecosystem":"pypi","requirements":"==2.1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/366942821633260301/c4fa83acbb0a4e9195b0e3573c933349/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.437Z","updated_at":"2024-10-20T01:12:24.437Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/366942821633260301/c4fa83acbb0a4e9195b0e3573c933349/artifacts/model/requirements.txt","dependencies":[{"id":20292590200,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590201,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590202,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590203,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590204,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590205,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false},{"id":20292590206,"package_name":"xgboost","ecosystem":"pypi","requirements":"==2.1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/3b92772b6ee84da484d0a10c329509bf/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.510Z","updated_at":"2024-10-20T01:12:24.510Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/3b92772b6ee84da484d0a10c329509bf/artifacts/model/requirements.txt","dependencies":[{"id":20292590224,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590225,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292590226,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590227,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590228,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590229,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590230,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/5894d229c45e4ed5a24cd8b321962103/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.625Z","updated_at":"2024-10-20T01:12:24.625Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/5894d229c45e4ed5a24cd8b321962103/artifacts/model/requirements.txt","dependencies":[{"id":20292590343,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590344,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292590345,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590346,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590347,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590348,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590349,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292590350,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/62f57694ba4442debb458bfeb16bab78/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.809Z","updated_at":"2024-10-20T01:12:24.809Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/62f57694ba4442debb458bfeb16bab78/artifacts/model/requirements.txt","dependencies":[{"id":20292590351,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590352,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292590353,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590354,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590355,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590356,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590357,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/732fae4292724380b62671c206423b30/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:24.881Z","updated_at":"2024-10-20T01:12:24.881Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/732fae4292724380b62671c206423b30/artifacts/model/requirements.txt","dependencies":[{"id":20292590403,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590404,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292590405,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590406,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590407,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590408,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590409,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/78eeb550e9dc4ea892dfbfc20c640966/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:25.295Z","updated_at":"2024-10-20T01:12:25.295Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/78eeb550e9dc4ea892dfbfc20c640966/artifacts/model/requirements.txt","dependencies":[{"id":20292590741,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590742,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292590743,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590744,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590745,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590746,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590747,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292590748,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/8bf8aabe6ec64c92ba1c9e97179051d2/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:25.649Z","updated_at":"2024-10-20T01:12:25.649Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/8bf8aabe6ec64c92ba1c9e97179051d2/artifacts/model/requirements.txt","dependencies":[{"id":20292590763,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292590764,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292590765,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292590766,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292590767,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292590768,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292590769,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292590770,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/9b0e2e7215e647eeb517203f99f9d55f/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:25.758Z","updated_at":"2024-10-20T01:12:25.758Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/9b0e2e7215e647eeb517203f99f9d55f/artifacts/model/requirements.txt","dependencies":[{"id":20292591215,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292591216,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292591217,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292591218,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292591219,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292591220,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292591221,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/b13e32dae1e04397b158cdde45e2310c/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:25.926Z","updated_at":"2024-10-20T01:12:25.926Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/b13e32dae1e04397b158cdde45e2310c/artifacts/model/requirements.txt","dependencies":[{"id":20292591256,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292591257,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292591258,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292591259,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292591260,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292591261,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292591262,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292591263,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"mlartifacts/770095492999162530/bb939ca36f17423bba0d862a4b248ad8/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:26.157Z","updated_at":"2024-10-20T01:12:26.157Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/mlartifacts/770095492999162530/bb939ca36f17423bba0d862a4b248ad8/artifacts/model/requirements.txt","dependencies":[{"id":20292591292,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292591293,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292591294,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292591295,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292591296,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292591297,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292591298,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"notebooks/mlartifacts/371509179810119961/442b56b8dbb5497d8b360a75c6933267/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:26.234Z","updated_at":"2024-10-20T01:12:26.234Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/notebooks/mlartifacts/371509179810119961/442b56b8dbb5497d8b360a75c6933267/artifacts/model/requirements.txt","dependencies":[{"id":20292591311,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292591312,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292591313,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292591314,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292591315,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292591316,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292591317,"package_name":"scikit-optimize","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":20292591318,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"notebooks/mlruns/247522349482579112/3cbfdb0b05ee4ebda2b1a998d3371311/artifacts/model/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-10-20T01:12:26.319Z","updated_at":"2024-10-20T01:12:26.319Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/notebooks/mlruns/247522349482579112/3cbfdb0b05ee4ebda2b1a998d3371311/artifacts/model/requirements.txt","dependencies":[{"id":20292591869,"package_name":"mlflow","ecosystem":"pypi","requirements":"==2.16.2","direct":true,"kind":"runtime","optional":false},{"id":20292591872,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":20292591874,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":20292591875,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.2.2","direct":true,"kind":"runtime","optional":false},{"id":20292591876,"package_name":"psutil","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"runtime","optional":false},{"id":20292591877,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.5.2","direct":true,"kind":"runtime","optional":false},{"id":20292591878,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/predict_and_deploy.yml","sha":null,"kind":"manifest","created_at":"2024-10-22T09:22:09.831Z","updated_at":"2024-10-22T09:22:09.831Z","repository_link":"https://github.com/atodorov284/air-quality-forecast/blob/deploy/.github/workflows/predict_and_deploy.yml","dependencies":[{"id":20345025599,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":20345025600,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":20345025601,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]}],"score":3.1780538303479453,"created_at":"2024-11-14T00:13:37.188Z","updated_at":"2026-05-15T00:30:21.821Z","avatar_url":"https://github.com/atodorov284.png","language":"Python","category":"Natural Resources","sub_category":"Air Quality","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"---\ntitle: Air Quality Forecasting\nemoji: 📈\ncolorFrom: yellow\ncolorTo: gray\nsdk: streamlit\nsdk_version: 1.39.0\napp_file: streamlit_src/app.py\npinned: false\n---\n\n# Air Quality Forecast\n\n\u003ca target=\"_blank\" href=\"https://cookiecutter-data-science.drivendata.org/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/CCDS-Project%20template-328F97?logo=cookiecutter\" /\u003e\n\u003c/a\u003e\n\nAir pollution is a significant environmental concern, especially in urban areas, where the high levels of nitrogen dioxide and ozone can have a negative impact on human health, the ecosystem and on the overall quality of life. Given these risks, monitoring and forecasting the level of air pollution is an important task in order to allow for timely actions to reduce the harmful effects.\n\nIn the Netherlands, cities like Utrecht experience challenges concerning air quality due to urbanization, transportation, and industrial activities. Developing a system that can provide accurate and robust real-time air quality monitoring and reliable forecasts for future pollution levels would allow authorities and residents to take preventive measures and adjust their future activities based on expected air quality. This project focuses on the time-series forecasting of air pollution levels, specifically NO\u003csub\u003e2\u003c/sub\u003e and O\u003csub\u003e3\u003c/sub\u003e concentrations, for the next three days. This task can be framed as a regression problem, where the goal is to predict continuous values based on historical environmental data. Moreover, it provides infrastructure for real-time prediction, based on recent measurements.\n\n---\n## Streamlit Application\n\nExplore the interactive air quality forecast for Utrecht through our Streamlit app on Hugging Face Spaces:\n\n[Air Quality Forecasting App](https://huggingface.co/spaces/03chrisk/air-quality-forecasting)\n\n## 🚀 How to Run the App\n\nTo launch the Utrecht Air Quality Monitoring application on a localhost, follow these simple steps:\n\n1. **Navigate to the `streamlit_src` folder** in your terminal where the app files are located.\n\n2. **Run the Streamlit application** by entering the following command:\n   ```bash\n   streamlit run app.py\n\u003e [!TIP]\n\u003e **Alternative Path**: If you are not in the `streamlit_src` folder, provide the full path to `app.py`. For example, from the root directory:\n\u003e - **Windows**:\n\u003e   ```bash\n\u003e   streamlit run .\\streamlit_src\\app.py\n\u003e   ```\n\u003e - **macOS/Linux**:\n\u003e   ```bash\n\u003e   streamlit run ./streamlit_src/app.py\n\u003e   ```\n\n\n---\n\n## 🚀 How to Run the Scripts\n\n### Setting Up\n\n**Clone the Repository**: Start by cloning the repository to your local machine.\n   ```bash\n   git clone https://github.com/atodorov284/air-quality-forecast.git\n   cd air-quality-forecast\n   ```\n**Set Up Environment**:\n   Make sure all dependencies are installed by running the following `requirements.txt` file from the repository root:\n   ```bash\n   pip install -r requirements.txt\n   ```\n### Running Source Code\nFirst, navigate to the `air-quality-forecast` folder, which contains the source code for the project:\n\n```bash\ncd air_quality_forecast\n```\n**📊 View the MLFlow Dashboard**:\nTo track experiments, run `model_development.py`, which will start an MLFlow server on `localhost` at port `5000`.\n\n```bash\npython model_development.py\n```\n\u003e [!TIP]\n\u003e If the server does not start automatically, manually run the MLFlow UI using:\n\u003e ```bash\n\u003e mlflow ui --port 5000\n\u003e  ```\n\u003e You might need to grant admin permissions for this process\n\n**🔄 Using the parser to retrain the model or make predictions on new data**:\nInstructions on how to use the retraining protocol or making predictions on new data can be found in the `README.md` in the `air-quality-forecast` directory\n\n\u003e [!NOTE]\n\u003eThe retrain datasets need to be under data/retrain and the prediction dataset needs to be under data/inference.\n---\n\u003e [!IMPORTANT]\n\u003e The notebooks in this project were used as scratch for analysis and data merge and do not reflect our thorough methodology (source is under air-quality-forecast). Some extra scripts for the generation of our plots in the report can be found under extra_scripts.\n---\n## 📖 Viewing the Documentation\n\nThe project documentation is generated using Sphinx and can be viewed as HTML files. To access the documentation:\n\n1. Navigate to the `_build/html/` directory inside the `docs` folder:\n```bash\ncd docs\\_build\\html\\\n```\n2. Open the `index.html` file in your web browser. You can do this by double-clicking the file in your file explorer or using the following command:\n```bash\nopen index.html  # macOS\nxdg-open index.html  # Linux\nstart index.html  # Windows\n```\n3. Alternatively you can navigate to the `index.html` file through the file explorer and double click it to run it\n---\n## 📂 Project Folder Structure\n\n```plaintext\n├── LICENSE               \u003c- Open-source MIT license\n├── Makefile              \u003c- Makefile with convenience commands like `make data` or `make train`\n├── README.md             \u003c- The top-level README for developers using this project.\n├── data                  \u003c- Folder containing data used for training, testing, and inference\n│   ├── inference         \u003c- Data for inference predictions\n│   ├── model_predictions \u003c- Folder containing model-generated predictions\n│   ├── other             \u003c- Additional data or miscellaneous files\n│   ├── processed         \u003c- The final, canonical data sets for modeling. Contains the train-test split.\n│   └── raw               \u003c- The original, immutable data dump.\n│\n├── .github               \u003c- Contains automated workflows for reproducibility, flake8 checks, and scheduled updates.\n│\n├── docs                  \u003c- Contains files to make the HTML documentation for this project using Sphinx\n│\n├── mlruns                \u003c- Contains all the experiments ran using mlflow.\n│\n├── mlartifacts           \u003c- Contains the artifacts generated by mlflow experiments.\n│\n├── notebooks             \u003c- Scratch Jupyter notebooks (not to be evaluated, source code is in air-quality-forecast)\n│\n├── pyproject.toml        \u003c- Project configuration file with package metadata for\n│                            air-quality-forecast and configuration for tools like black\n│\n├── reports               \u003c- Generated analysis as HTML, PDF, LaTeX, etc.\n│\n├── requirements.txt      \u003c- The requirements file for reproducing the analysis environment, e.g.\n│                            generated with `pip freeze \u003e requirements.txt`\n│\n├── setup.cfg             \u003c- Configuration file for flake8\n│\n├── configs               \u003c- Configuration folder for the hyperparameter search space (for now)\n│\n├── saved_models          \u003c- Folder with the saved models in `.pkl` and `.xgb`.\n│\n├── extra_scripts         \u003c- Some extra scripts in R and .tex to generate figures\n│\n├── streamlit_src         \u003c- Streamlit application source code\n│   ├── controllers       \u003c- Handles application logic and data flow for different app sections\n│   ├── json_interactions \u003c- Manages JSON data interactions for configuration and storage\n│   ├── models            \u003c- Contains model loading, preprocessing, and prediction logic\n│   └── views             \u003c- Manages the UI components for different app sections\n│\n└── air_quality_forecast  \u003c- Source code used in this project.\n    │\n    ├── api_caller.py             \u003c- Manages API requests to retrieve air quality and meteorological data\n    ├── data_pipeline.py          \u003c- Loads, extracts, and preprocesses the data. Final result is the train-test under data/processed\n    ├── get_prediction_data.py    \u003c- Prepares input data required for generating forecasts\n    ├── main.py                   \u003c- Main entry point for executing the forecasting pipeline\n    ├── model_development.py      \u003c- Trains the models using k-fold CV and Bayesian hyperparameter tuning\n    ├── parser_ui.py              \u003c- Manages configuration settings and command-line arguments\n    ├── prediction.py             \u003c- Generates forecasts using the trained model\n    └── utils.py                  \u003c- Utility functions for common tasks across scripts\n```\n---\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/303801","html_url":"https://ost.ecosyste.ms/projects/303801"}