{"id":20801924,"url":"https://github.com/philips-software/random_forest","last_synced_at":"2025-07-21T11:36:08.976Z","repository":{"id":42438368,"uuid":"212573319","full_name":"philips-software/random_forest","owner":"philips-software","description":"Random Forests in MPyC","archived":false,"fork":false,"pushed_at":"2022-04-06T06:48:51.000Z","size":152,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-07T00:45:35.595Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/philips-software.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"License.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-03T12:22:16.000Z","updated_at":"2022-11-29T07:47:36.000Z","dependencies_parsed_at":"2022-09-09T16:30:44.874Z","dependency_job_id":null,"html_url":"https://github.com/philips-software/random_forest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/philips-software/random_forest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2Frandom_forest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2Frandom_forest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2Frandom_forest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2Frandom_forest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philips-software","download_url":"https://codeload.github.com/philips-software/random_forest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2Frandom_forest/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266292509,"owners_count":23906517,"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":[],"created_at":"2024-11-17T18:26:10.857Z","updated_at":"2025-07-21T11:36:08.949Z","avatar_url":"https://github.com/philips-software.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Random Forests in MPyC\n----------------------\n\n![CI Status][ci]\n\nAn implementation of machine learning on secure data. We allow a model to be\ntrained and used on data that is kept private. We use the [MPyC][mpyc] library\nto perform a secure multi-party computation (MPC) that trains a forest of\ndecision trees using an algorithm that is similar to the C4.5 machine learning\nalgorithm.\n\n### Installation\n\nInstall Python 3.7, then invoke:\n\n```bash\npip install -r requirements.txt\n```\n\n### Usage\n\nThe [spect.py][spect] and [balance.py][balance] files contain examples of how to\nspecify a dataset and to train a random forest on this data. These examples can\nbe run as follows:\n\n```bash\npython spect.py\npython balance.py\n```\n\nPlease keep in mind that these computations are much slower than their non-MPC\ncounterparts.\n\n### Tests\n\nRun the test by invoking:\n\n```bash\npytest\n```\n\nRun tests in watch mode:\n\n```bash\nptw [-c]\n```\n\n(The `-c` flag causes the screen to be cleared before each run.)\n\n### Profiling\n\n```\npip install snakeviz\npython -m cProfile -o spect.stats spect.py\nsnakeviz spect.stats\n```\n\n### Thanks\n\nThis algorithm was developed as part of the [SODA project][soda]. Many thanks to\nMark Abspoel, Daniel Escudero and Nikolaj Volgushev for designing the decision\ntree algorithm for MPC (See chapter 6 of [this SODA document][paper]). Many\nthanks to Berry Schoenmakers who developed [MPyC][mpyc] and helped us throughout\nthe implementation of this algorithm.\n\n[ci]: https://github.com/philips-software/random_forest/workflows/Build%20and%20test/badge.svg\n[soda]: https://www.soda-project.eu\n[paper]: https://www.soda-project.eu/wp-content/uploads/2019/10/SODA-D2.3-Use-case-specific-algorithms.pdf\n[mpyc]: https://github.com/lschoe/mpyc\n[spect]: ./spect.py\n[balance]: ./balance.py\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilips-software%2Frandom_forest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilips-software%2Frandom_forest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilips-software%2Frandom_forest/lists"}