栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LightGBM模型保存为PMML文件,通过Java调用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LightGBM模型保存为PMML文件,通过Java调用

1、将模型保存为txt文件
import os
import lightgbm as lgb
from sklearn import datasets
from sklearn.model_selection import train_test_split

iris = datasets.load_iris()

X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=56)

# create dataset for lightgbm
lgb_train = lgb.Dataset(X_train, y_train)
lgb_test = lgb.Dataset(X_test, y_test, reference=lgb_train)

# specify your configurations as a dict
params = {
    'objective': 'multiclass',
    'num_class': 3,
    'num_leaves': 5,
    'metric': {'multi_logloss', 'multi_error'},
    'verbose': 0
}

evals_result = {}  # to record eval results for plotting

print('Starting training...')
# train
gbm = lgb.train(params,
                lgb_train,
                num_boost_round=5,
                valid_sets=[lgb_train, lgb_test],
                feature_name=list(iris.feature_names),
                evals_result=evals_result,
                verbose_eval=1)

gbm.save_model('lgb_model.txt')

2、通过JAR包将txt文件转为PMML文件 

CSDN链接:pmml-lightgbm-example-executable-1.4-SNAPSHOT.jar

新建文件目录,将lgb_model.txt 和 pmml-lightgbm-example-executable-1.4-SNAPSHOT.jar放入目录下,通过该文件目录下栏输入cmd ,打开终端,执行如下代码。

java -jar "pmml-lightgbm-example-executable-1.4-SNAPSHOT.jar" --lgbm-input lgb_model.txt --pmml-output lgb_model.pmml

得到如下PMML文件 



	
2022-01-19T15:03:50Z
scorepettycashv1 8.0 creditscore1 4.0 cnt_to_applied 3.0 m12_cell_nb_cons_anum 3.0 m12_id_nb_cons_onum 2.0 m12_id_nb_sloan_anum 5.0 td_bank_unbank_6m_abs 3.0 m12_cell_nb_avg_mnum 6.0 m12_id_cooff_onum 1.0 m6_cell_max_monnum 1.0 br_m3_sfz 1.0 m12_id_nb_cf_anum 5.0 m12_cell_nb_tot_mons 1.0 m3_cell_nb_cf_onum 1.0 cnt_black2 9.0 m12_cell_nb_yj_anum 2.0 weight_black 12.0 m12_cell_tot_mons 13.0 router_ratio 6.0 cnt_router 6.0 scoreconsoffv2 9.0 cnt_applied 1.0 scorecashon 6.0 ir_id_xcel_nm_days 1.0 td_bank_unbank_3m_abs 2.0 pct_router_ratio 16.0 td_12m_unbank 1.0 new_tx_riskscore_zong 1.0 m6_cell_nb_yj_anum 5.0 rh_fraud_score_zong 7.0 m12_id_max_monnum 5.0 phone_gray_score 3.0 yczf 23.0 gender 14.0 td_18m_bank 2.0 td3m_td1m 1.0 m12_id_nb_yj_anum 3.0 cnt_cf_m_12 2.0 m12_cell_nb_else_onum 1.0 m12_cell_avg_monnum 11.0 cnt_all 1.0 td_bank_unbank_12m_abs 12.0 td_18m_unbank 4.0 m12_cell_nb_cf_onum 1.0 m12_id_cooff_anum 1.0 ir_m6_cel_xbadr_cnt 1.0 m3_cell_nb_else_anum 1.0 social_liveness 1.0 black_ratio 7.0 m12_cell_nb_cons_onum 1.0 m12_cell_nb_onum 1.0 rep_rem_sum_m24 4.0 score_l 4.0 m3_cell_nb_else_onum 2.0 m12_cell_nb_cf_anum 5.0 td_bank_unbank_12m 3.0 td_bank_unbank_6m 20.0 pct_cnt_all 4.0 ave_rep_al_m24 24.0 m12_cell_nb_yj_onum 1.0 scorecreditbt 1.0 A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C
3、Java调用解析PMML文件


    4.0.0

    com.gld
    apple
    1.0-SNAPSHOT

    
        
            org.jpmml
            pmml-evaluator
            1.5.15
        
    


import org.dmg.pmml.FieldName;
import org.jpmml.evaluator.*;
import org.xml.sax.SAXException;

import javax.xml.bind.JAXBException;
import java.io.File;
import java.io.IOException;
import java.util.linkedHashMap;
import java.util.List;
import java.util.Map;

public class Server {

    public static void main(String[] args) throws JAXBException, SAXException, IOException {
        // Building a model evaluator from a PMML file
        String modelPath = "model.pmml";
        System.out.println(modelPath);
        evaluator evaluator = new LoadingModelevaluatorBuilder().load(new File(modelPath)).build();

        // Performing the self-check
        evaluator.verify();

        // Printing input (x1, x2, .., xn) fields
        List inputFields = evaluator.getInputFields();
        System.out.println("Input fields: ");
        for (InputField inputField : inputFields) {
            System.out.println(inputField);
        }

        // Printing primary result (y) field(s)
        List targetFields = evaluator.getTargetFields();
        System.out.println("Target field(s): " + targetFields);

        // Printing secondary result (eg. probability(y), decision(y)) fields
        List outputFields = evaluator.getOutputFields();
        System.out.println("Output fields: ");
        for (OutputField outputField : outputFields) {
            System.out.println(outputField);
        }

        // Predicting
        Map inputRecord = new linkedHashMap();
        // 5.1, 3.5, 1.4, 0.2 -> 0
        // 6.4, 3.2, 4.5, 1.5 -> 1
        // 5.9, 3. , 5.1, 1.8 -> 2
        inputRecord.put("sepal_length_(cm)", 5.1);
        inputRecord.put("sepal_width_(cm)", 3.5);
        inputRecord.put("petal_length_(cm)", 1.4);
        inputRecord.put("petal_width_(cm)", 0.2);

        Map arguments = new linkedHashMap();

        // Mapping the record field-by-field from data source schema to PMML schema
        for (InputField inputField : inputFields) {
            FieldName inputName = inputField.getName();

            Object rawValue = inputRecord.get(inputName.getValue());

            // Transforming an arbitrary user-supplied value to a known-good PMML value
            FieldValue inputValue = inputField.prepare(rawValue);

            arguments.put(inputName, inputValue);
        }

        // evaluating the model with known-good arguments
        Map results = evaluator.evaluate(arguments);
        System.out.println(results);

        // Decoupling results from the JPMML-evaluator runtime environment
        Map resultRecord = evaluatorUtil.decodeAll(results);
        System.out.println(resultRecord);

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号