{"id":42610379,"url":"https://github.com/maxisoft/github-contributions-predictor","last_synced_at":"2026-01-29T02:33:10.803Z","repository":{"id":61558359,"uuid":"552251393","full_name":"maxisoft/github-contributions-predictor","owner":"maxisoft","description":"How predictable am I in my GitHub contributions","archived":false,"fork":false,"pushed_at":"2024-09-11T07:35:09.000Z","size":243,"stargazers_count":3,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-11T18:23:36.239Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/maxisoft/github-contributions-predictor/tree/pred_history_no_scaling","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxisoft.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":"2022-10-16T06:39:57.000Z","updated_at":"2024-09-10T15:28:02.000Z","dependencies_parsed_at":"2024-10-26T00:31:42.721Z","dependency_job_id":"eb943ade-3486-4cec-b6eb-c36c9abd2d36","html_url":"https://github.com/maxisoft/github-contributions-predictor","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/maxisoft/github-contributions-predictor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2Fgithub-contributions-predictor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2Fgithub-contributions-predictor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2Fgithub-contributions-predictor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2Fgithub-contributions-predictor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxisoft","download_url":"https://codeload.github.com/maxisoft/github-contributions-predictor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxisoft%2Fgithub-contributions-predictor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28861109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"online","status_checked_at":"2026-01-29T02:00:06.714Z","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":[],"created_at":"2026-01-29T02:33:10.341Z","updated_at":"2026-01-29T02:33:10.796Z","avatar_url":"https://github.com/maxisoft.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"GitHub's contributions Predictor\n-----------------\nA toy project to see how predictable I'm with my so-called GitHub contributions ;)\n\nOne of the main goal of this repo is to predict current/next day [contributions](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile) of multiples users in a daily automated way using GitHub actions.  \nTo do so this project feature a pytorch model trained with contributions data from GitHub users.  \nThe history of those predictions is [available in the `pred_history_no_scaling` branch](https://github.com/maxisoft/github-contributions-predictor/tree/pred_history_no_scaling)\n\n## How to get predictions for your contributions\nPlease first **consider** that this project is just for fun, not well tested and intended for an **harmless use**.\n\nTo add a user for the next predictions, do the following:\n- [fork this repository](https://github.com/maxisoft/github-contributions-predictor/fork)\n- append your GitHub nickname into the `users.txt` file\n- commit\n- open a pull request\n\n## Technical Process Overview\nThe following readme parts are now more technical.   \n\nHere's an overview of the process to predict contributions from zero:\n1. Gather contributions data\n2. Train a machine learning model\n3. Use the model to predict futures contributions ([published here](https://github.com/maxisoft/github-contributions-predictor/tree/pred_history_no_scaling))\n4. Repeat `3.` every day by using GitHub actions\n\n## Requirements to rebuild a model\n- [anaconda](https://www.anaconda.com/products/distribution)\n- [pytorch](https://pytorch.org/get-started/locally/) (with or without GPU)\n- any additional pip requirements are listed in `requirements.txt`\n\n\n## Source files description\nTo allow one to build his own model the project is organized in multiple ordered python/jupyter files designed to be ran sequentially.\n\n### 0-gather_data.py\nDownload and save users' contributions and other stats provided by GitHub public api.  \nUser list is collected by randomly walking the users' *following*/*followers* graph.  \nProduce a big `contribs.json` files containing raw users' data.  \nThis script can be run again to gather even more data.\n\n### 1-pack-data.py\nParse and pack gathered data into numpy ndarrays.  \nProduce a compressed `userdata.npz` numpy file\n\n### 2-preprocess.py\nPre-process users' contributions by using the following scheme:  \n- data augmentations using `mean`, `std`, `skewness` and `fft`\n- outliers removal using quantiles filters mainly\n- features normalization using [scikit-learn preprocessing](https://scikit-learn.org/stable/modules/preprocessing.html) tools\n\nProduce a compressed `ml.npz` numpy file and a `scalers.pkl.z` containing pickled scalers.\n\n### 3-train-model.ipynb\nJupyter notebook (designed to be run on kaggle) for training a pytorch model.\n\n### 4-inference.py\nUse previous pytorch model, download the latest users' data and predict their contributions number for the next 7 days.  \nProduce `csv` files containing predictions.\n\n\n## Bonus for the readers\nThere's [an additional branch `pred_history_with_scaling`](https://github.com/maxisoft/github-contributions-predictor/tree/pred_history_with_scaling) containing predictions with a model trained to expect more contributions from users.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxisoft%2Fgithub-contributions-predictor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxisoft%2Fgithub-contributions-predictor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxisoft%2Fgithub-contributions-predictor/lists"}