{"id":23955514,"url":"https://github.com/komiya-atsushi/xgboost-predictor-java","last_synced_at":"2025-04-05T22:07:19.536Z","repository":{"id":1927240,"uuid":"45342258","full_name":"komiya-atsushi/xgboost-predictor-java","owner":"komiya-atsushi","description":"Pure Java implementation of XGBoost predictor for online prediction tasks.","archived":false,"fork":false,"pushed_at":"2022-03-08T09:38:43.000Z","size":1004,"stargazers_count":340,"open_issues_count":24,"forks_count":108,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-29T21:05:26.672Z","etag":null,"topics":["java","machine-learning","xgboost"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/komiya-atsushi.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}},"created_at":"2015-11-01T13:52:41.000Z","updated_at":"2025-03-10T21:28:17.000Z","dependencies_parsed_at":"2022-07-24T22:02:43.076Z","dependency_job_id":null,"html_url":"https://github.com/komiya-atsushi/xgboost-predictor-java","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komiya-atsushi%2Fxgboost-predictor-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komiya-atsushi%2Fxgboost-predictor-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komiya-atsushi%2Fxgboost-predictor-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komiya-atsushi%2Fxgboost-predictor-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/komiya-atsushi","download_url":"https://codeload.github.com/komiya-atsushi/xgboost-predictor-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406089,"owners_count":20933803,"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":["java","machine-learning","xgboost"],"created_at":"2025-01-06T15:33:15.482Z","updated_at":"2025-04-05T22:07:19.507Z","avatar_url":"https://github.com/komiya-atsushi.png","language":"Java","funding_links":[],"categories":["人工智能"],"sub_categories":["Spring Cloud框架"],"readme":"xgboost-predictor-java\n======================\n\n[![Build Status](https://travis-ci.org/komiya-atsushi/xgboost-predictor-java.svg?branch=master)](https://travis-ci.org/komiya-atsushi/xgboost-predictor-java)\n[![Download](https://api.bintray.com/packages/komiya-atsushi/maven/xgboost-predictor/images/download.svg) ](https://bintray.com/komiya-atsushi/maven/xgboost-predictor/_latestVersion)\n\nPure Java implementation of [XGBoost](https://github.com/dmlc/xgboost/) predictor for online prediction tasks.\n\n\n# Getting started\n\n## Adding to dependencies\n\nIf you use **Maven**:\n\n```xml\n\u003crepositories\u003e\n  \u003crepository\u003e\n    \u003cid\u003ebintray-komiya-atsushi-maven\u003c/id\u003e\n    \u003curl\u003ehttp://dl.bintray.com/komiya-atsushi/maven\u003c/url\u003e\n  \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependencies\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ebiz.k11i\u003c/groupId\u003e\n    \u003cartifactId\u003exgboost-predictor\u003c/artifactId\u003e\n    \u003cversion\u003e0.3.0\u003c/version\u003e\n  \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\nOr **Gradle**:\n\n```groovy\nrepositories {\n    // Use jcenter instead of mavenCentral\n    jcenter()\n}\n\ndependencies {\n    compile group: 'biz.k11i', name: 'xgboost-predictor', version: '0.3.0'\n}\n```\n\nOr **sbt**:\n\n```scala\nresolvers += Resolver.jcenterRepo\n\nlibraryDependencies ++= Seq(\n  \"biz.k11i\" % \"xgboost-predictor\" % \"0.3.0\"\n)\n```\n\n\n## Using Predictor in Java\n\n```java\npackage biz.k11i.xgboost.demo;\n\nimport biz.k11i.xgboost.Predictor;\nimport biz.k11i.xgboost.util.FVec;\n\npublic class HowToUseXgboostPredictor {\n    public static void main(String[] args) throws java.io.IOException {\n        // If you want to use faster exp() calculation, uncomment the line below\n        // ObjFunction.useFastMathExp(true);\n\n        // Load model and create Predictor\n        Predictor predictor = new Predictor(\n                new java.io.FileInputStream(\"/path/to/xgboost-model-file\"));\n\n        // Create feature vector from dense representation by array\n        double[] denseArray = {0, 0, 32, 0, 0, 16, -8, 0, 0, 0};\n        FVec fVecDense = FVec.Transformer.fromArray(\n                denseArray,\n                true /* treat zero element as N/A */);\n\n        // Create feature vector from sparse representation by map\n        FVec fVecSparse = FVec.Transformer.fromMap(\n                new java.util.HashMap\u003cInteger, Double\u003e() {{\n                    put(2, 32.);\n                    put(5, 16.);\n                    put(6, -8.);\n                }});\n\n        // Predict probability or classification\n        double[] prediction = predictor.predict(fVecDense);\n\n        // prediction[0] has\n        //    - probability (\"binary:logistic\")\n        //    - class label (\"multi:softmax\")\n\n        // Predict leaf index of each tree\n        int[] leafIndexes = predictor.predictLeaf(fVecDense);\n\n        // leafIndexes[i] has a leaf index of i-th tree\n    }\n}\n```\n\n\n## Apache Spark integration\n\nSee detail [xgboost-predictor-spark](https://github.com/komiya-atsushi/xgboost-predictor-java/tree/master/xgboost-predictor-spark).\n\n\n# Benchmark\n\nThroughput comparison to [xgboost4j 1.1](https://github.com/dmlc/xgboost/tree/master/java/xgboost4j) by [xgboost-predictor-benchmark](https://github.com/komiya-atsushi/xgboost-predictor-benchmark).\n\n| Feature           | xgboost-predictor | xgboost4j      |\n| ----------------- | ----------------: | -------------: |\n| Model loading     |    49017.60 ops/s | 39669.36 ops/s |\n| Single prediction |  6016955.46 ops/s |  1018.01 ops/s |\n| Batch prediction  |    44985.71 ops/s |     5.04 ops/s |\n| Leaf prediction   | 11115853.34 ops/s |  1076.54 ops/s |\n\nXgboost-predictor-java is about **6,000 to 10,000 times faster than** xgboost4j on prediction tasks.\n\n\n# Supported models, objective functions and API\n\n- Models\n    - \"gblinear\"\n    - \"gbtree\"\n    - \"dart\"\n- Objective functions\n    - \"binary:logistic\"\n    - \"binary:logitraw\"\n    - \"multi:softmax\"\n    - \"multi:softprob\"\n    - \"reg:linear\"\n    - \"reg:squarederror\"\n    - \"rank:pairwise\"\n- API\n    - Predicts probability or classification\n        - `Predictor#predict(FVec)`\n    - Outputs margin\n        - `Predictor#predict(FVec, true /* output margin */)`\n    - Predicts leaf index\n        - `Predictor#predictLeaf(FVec)`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkomiya-atsushi%2Fxgboost-predictor-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkomiya-atsushi%2Fxgboost-predictor-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkomiya-atsushi%2Fxgboost-predictor-java/lists"}