{"id":19973320,"url":"https://github.com/jsmith/jml","last_synced_at":"2026-06-02T20:31:55.060Z","repository":{"id":131851190,"uuid":"108656113","full_name":"jsmith/jml","owner":"jsmith","description":"Machine Learning library written in pure Java","archived":false,"fork":false,"pushed_at":"2018-11-25T15:56:02.000Z","size":502,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-31T19:34:39.329Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jsmith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-10-28T14:30:13.000Z","updated_at":"2019-02-03T14:55:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"951416fc-3576-486d-ace4-175f711d08e0","html_url":"https://github.com/jsmith/jml","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jsmith/jml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsmith%2Fjml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsmith%2Fjml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsmith%2Fjml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsmith%2Fjml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsmith","download_url":"https://codeload.github.com/jsmith/jml/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsmith%2Fjml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33835766,"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-02T02:00:07.132Z","response_time":109,"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":"2024-11-13T03:11:12.261Z","updated_at":"2026-06-02T20:31:55.044Z","avatar_url":"https://github.com/jsmith.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/jsmith/jml.png?branch=master)](https://travis-ci.org/jacsmith21/jml)\n\n# Java Machine Learning (JML)\nA machine library built in pure Java. Built for the CS6735 programming assignment.\n\nSee the [report](https://github.com/jacsmith21/school/blob/master/cs6735/assignment/code/report.pdf) for more details!\n\n## Algorithms\n- ID3 (with C4.5 enhancements)\n- Naive Bayes\n- AdaBoost (SAMME)\n- Random Forest\n- K-Nearest Neighbors\n- K-Fold Cross Validation\n\n## Data\n5 UCI Machine Learning Repositories come built into the framework. \n* [Breast Cancer](http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29) \n* [Car](http://archive.ics.uci.edu/ml/datasets/Car+Evaluation) \n* [E. Coli](http://archive.ics.uci.edu/ml/datasets/Ecoli)  \n* [Letter Recognition](http://archive.ics.uci.edu/ml/datasets/Letter+Recognition)  \n* [Mushroom](http://archive.ics.uci.edu/ml/datasets/Mushroom)\n\n## Usage\n### Loading Data\n```java\nimport ca.jacob.jml.Dataset;\n\nimport static ca.jacob.jml.Dataset.CONTINUOUS;\nimport static ca.jacob.jml.Dataset.DISCRETE;\nimport static ca.jacob.cs6735.DataUtil.*;\n\npublic class Main() {\n\tpublic static void main(String[] args)  {\n\t\tDataSet d = loadBreastCancerData(Main.class);\n\t\td = loadCarData(Main.class);\n        \td = loadEColiData(Main.class);\n        \td = loadLetterData(Main.class);\n        \td = loadMushroomData(Main.class);\n\t\t...\n\t\tString[][] data = loadYourOwnData();\n\t\tMatrix mat = new Matrix(data); // last column are labels\n\t\t\n\t\t// create dataset and initilize to DISCRETE or CONTINUOUS or mixture of the two\n\t\td = new Dataset(mat, DISCRETE);\n\t}\n}\n```\n\n### Training Model\n```java\nimport ca.jacob.jml.Dataset;\nimport ca.jacob.jml.Model;\nimport ca.jacob.jml.KFold;\nimport ca.jacob.jml.bayes.NaiveBayes;\nimport ca.jacob.jml.ensemble.AdaBoost;\nimport ca.jacob.jml.math.distance.Euclidean;\nimport ca.jacob.jml.math.distance.Hamming;\nimport ca.jacob.jml.math.distribution.Gaussian;\nimport ca.jacob.jml.tree.ID3;\nimport ca.jacob.jml.ensemble.RandomForest;\nimport ca.jacob.jml.neighbors.KNN;\n\nimport static ca.jacob.cs6735.DataUtil.*;\n\npublic class Main() {\n\tpublic static void main(String[] args)  {\n\t\tDataSet d = loadBreastCancerData(Main.class);\n\t\talgorithms = new ArrayList\u003c\u003e();\n\t\t\n\t\t// Algorithm options ...\n\t\tAlgorithm a = new ID3();\n\t\ta = new NaiveBayes();\n\t\t\n\t\t// AdaBoost -\u003e decision stump w/ 100 leaners and 10% of samples each time \n\t\ta = new AdaBoost(new ID3(1), 100, 0.1);\n\t\t\n\t\t// AdaBoost -\u003e Naive Bayes w/ 100 learners and 10% of samples each time\n\t\ta = new AdaBoost(new NaiveBayes(), 100, 0.1);\n\t\t\n\t\t// Random Forest w/ 100 learners and 10% of samples each time\n\t\ta = new RandomForest(new ID3(), 100, 0.1);\n\t\t\n\t\t// KNN with k=1 and the Hamming distance function\n\t\ta = new KNN(1, new Hamming());\n\t\t\n\t\t// Training ...\n\t\tModel m = a.fit(d);\n\t\t\n\t\t// Testing ...\n\t\td = loadYourTestData();\n\t\tVector predictions = m.predict(d);\n\t\tdouble accuracy = m.accuracy(d);\n\t\t\n\t\t// Or KFold\n\t\tKFold k = new KFold(5); // 5-fold cross validation\n\t\tReport r = k.generateReport(a, d);\n\t\taccuracy = r.accuracy();\n\t}\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsmith%2Fjml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsmith%2Fjml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsmith%2Fjml/lists"}