lightgbm_predict4j:LightGBM在线预测的java实现

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());

    }

}



1、下载并安装mysql,将脚本执行至数据库中; 2、配置java环境,使用jdk8,配置环境变量,下载IntelliJ IDEA 2019.2.4,该工具为java代码编译器 3、下载Maven,配置至环境变量(百度搜索很多),将构建器为Maven,类库配置成阿里库(方法:百度搜索很多很多) 4、将工程导入后,在application-local.yml文件中配置数据库 5、在logback-prod.xml文件中配置log日志 6、配置完毕后,即可启动 访问地址:http://localhost:8082/anime/login.html 用户名:admin 密码:admin V:china1866 1、 登录 2、 首页 3、 权限管理-用户管理 4、 权限管理-添加用户数据 5、 交通数据管理-查看交通数据 6、 交通数据管理-添加交通数据 7、 交通预测-交通数据预测 脚本: CREATE TABLE `traffic_data_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `trafficId` VARCHAR(50) NULL DEFAULT NULL COMMENT '交通数据编号', `trafficContent` VARCHAR(50) NULL DEFAULT NULL COMMENT '交通状况', `trafficSection` VARCHAR(200) NULL DEFAULT NULL COMMENT '交通路段', `trafficMan` VARCHAR(200) NULL DEFAULT NULL COMMENT '上报人', `trafficDate` VARCHAR(200) NULL DEFAULT NULL COMMENT '上报时间', `status` VARCHAR(200) NULL DEFAULT NULL COMMENT '交通状态', PRIMARY KEY (`id`) ) COMMENT='交通数据表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=44 ; CREATE TABLE `sys_user_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `role_id` INT(11) NULL DEFAULT NULL COMMENT '角色ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `user_name` VARCHAR(100) NOT NULL COMMENT '用户名', `status` INT(11) NOT NULL COMMENT '是否有效0:false\\\\1:true', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(100) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(100) NULL DEFAULT NULL, `password` VARCHAR(128) NOT NULL, `tenantcode` VARCHAR(50) NOT NULL, `diskId` VARCHAR(500) NULL DEFAULT NULL, `remarks` VARCHAR(500) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='系统用户表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=51 ; CREATE TABLE `sys_role_t` ( `role_id` INT(11) NOT NULL COMMENT '角色ID', `role_name` VARCHAR(200) NOT NULL COMMENT '权限名称', `status` INT(11) NOT NULL COMMENT '是否有效0:true\\\\1:false', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(100) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(100) NULL DEFAULT NULL ) COMMENT='系统角色表' COLLATE='utf8_general_ci' ENGINE=InnoDB ; CREATE TABLE `sys_menu_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `parent_id` VARCHAR(50) NOT NULL COMMENT '父节点ID', `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID', `menu_name` VARCHAR(200) NOT NULL COMMENT '菜单名称', `menu_url` VARCHAR(200) NULL DEFAULT NULL COMMENT '菜单URL', `status` INT(11) NOT NULL COMMENT '有效(0有效,1失效)', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(200) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(200) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='菜单表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=33 ; CREATE TABLE `sys_menu_role_relation_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID', `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID', `status` INT(11) NOT NULL COMMENT '有效(0有效,1失效)', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(200) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(200) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='角色与菜单关系表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=51 ;
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值