lightgbm_predict4j:LightGBM在线预测的java实现
2017-05-27 10:38
3519 查看
LightGBM是微软推出的一款开源boosting工具,现在已经成为各类机器学习竞赛常用的一大利器。不过由于LightGBM是c++编写的,并且其预测功能的主要使用方式是命令行调用处理批量数据,比较难用于在线实时预测。lightgbm_predict4j是针对其预测代码用java重新实现的一个小工具,在用LightGBM离线生成模型之后,可以用lightgbm_predict4j加载模型,然后在java应用中用来做在线实时的预测。项目地址:https://github.com/lyg5623/lightgbm_predict4j
用法很简单,比如生成的模型文件为LightGBM_model.txt,以下为预测代码示例:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.lightgbm.predict4j.v2.Boosting;
import org.lightgbm.predict4j.v2.OverallConfig;
import org.lightgbm.predict4j.v2.Predictor;
import org.lightgbm.predict4j.SparseVector;
/**
* @author lyg5623
*/
public class UseageTest {
//your model path
private static String modelPath = "LightGBM_model.txt";
@Test
public void test() throws FileNotFoundException, IOException {
String path = UseageTest.class.getClassLoader().getResource(modelPath).getPath();
//your model path
path = URLDecoder.decode(path, "utf8");
Boosting boosting = Boosting.createBoosting(path);
// predict config, just like predict.conf in LightGBM
Map<String, String> map = new HashMap<String, String>();
OverallConfig config = new OverallConfig();
config.set(map);
Predictor predictor =
new Predictor(boosting, config.io_config.num_iteration_predict, config.io_config.is_predict_raw_score,
config.io_config.is_predict_leaf_index, config.io_config.pred_early_stop,
config.io_config.pred_early_stop_freq, config.io_config.pred_early_stop_margin);
// your data to predict
int[] indices = {2, 6, 9};
double[] values = {0.2, 0.4, 0.7};
SparseVector v = new SparseVector(values, indices);
List<Double> predicts = predictor.predict(v);
System.out.println("predict values " + predicts.toString());
}
}
用法很简单,比如生成的模型文件为LightGBM_model.txt,以下为预测代码示例:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.lightgbm.predict4j.v2.Boosting;
import org.lightgbm.predict4j.v2.OverallConfig;
import org.lightgbm.predict4j.v2.Predictor;
import org.lightgbm.predict4j.SparseVector;
/**
* @author lyg5623
*/
public class UseageTest {
//your model path
private static String modelPath = "LightGBM_model.txt";
@Test
public void test() throws FileNotFoundException, IOException {
String path = UseageTest.class.getClassLoader().getResource(modelPath).getPath();
//your model path
path = URLDecoder.decode(path, "utf8");
Boosting boosting = Boosting.createBoosting(path);
// predict config, just like predict.conf in LightGBM
Map<String, String> map = new HashMap<String, String>();
OverallConfig config = new OverallConfig();
config.set(map);
Predictor predictor =
new Predictor(boosting, config.io_config.num_iteration_predict, config.io_config.is_predict_raw_score,
config.io_config.is_predict_leaf_index, config.io_config.pred_early_stop,
config.io_config.pred_early_stop_freq, config.io_config.pred_early_stop_margin);
// your data to predict
int[] indices = {2, 6, 9};
double[] values = {0.2, 0.4, 0.7};
SparseVector v = new SparseVector(values, indices);
List<Double> predicts = predictor.predict(v);
System.out.println("predict values " + predicts.toString());
}
}
相关文章推荐
- Java平台要实现类似豆丁百度文科的文档在线阅读,总体思路是讲doc docx等文件格式利用jcom转换成pdf再用swftools转为swf。再用flexpaper组件显示swf。
- FCKeditor_2.6.4 + fckeditor-java-2.4.1-bin在线编辑页面jsp的实现
- java实现简单的在线用户统计
- Java 实现在线翻译功能 调用微软Bing API
- java 实现统计在线人数
- java 如何实现在线语音对话
- 文档在线预览:Java+FlexPaper+swfTools仿百度文库的设计与实现
- Java实现简单在线播放器——支持优酷和土豆
- PDF在线预览(java实现)
- 预测算法用java实现
- 如何实现java,jsp,ajax编写的在线聊天室啊?
- java session HttpSessionListener、HttpSessionBindingListener使用区别,实现在线人数统计以及踢出用户
- Java实现在线用户显示
- Java平台要实现类似豆丁百度文科的文档在线阅读,总体思路是讲doc docx等文件格式利用jcom转换成pdf再用swftools转为swf。再用flexpaper组件显示swf。
- java实现在线人数统计 (2011-05-30 15:10)
- 使用java 监听器实现在线人数统计
- kcfinder4j:java版的ckfinder、kcfinder (ajax在线文件管理,ckfinder jsp/java版, jquery 在线文件管理)
- 基于java的ACM online judge(OJ)在线判题系统实现
- [java]HttpSessionListener实现统计在线人数
- Java实现最简单的在线打开保存Excel文件