LightGBM Java
1. Installation
# Mac
brew install libomp
# Debian Linux
sudo apt install libgomp1
2. LightGBM
2.1 Python
Python code에서는 학습 그리고 evaluation을 작성하고, 이후에 txt 파일로 모델을 저장하는 것 까지 보여줍니다.
즉 Java 에서는 prediction관련해서만 콬드를 보여줍니다.
from lightgbm import LGBMClassifier
from sklearn.metrics import classification_report, accuracy_score
scale_pos_weight = sum(y_train == 0) / len(y_train)
model = LGBMClassifier(
metrics="prauc",
n_estimators=100,
scale_pos_weight=scale_pos_weight,
random_state=32
)
model.fit(x_train, y_train)
# 예측
y_prob = model.predict(x_test)
y_prob = model.predict_proba(x_test)[:, 1]
txt 파일로 저장합니다.
텍스트 파일로 저장시 실제로 인간이 이해할수 있는 txt 정보로 저장이 됩니다.
model.booster_.save_model("model.txt")
2.2 LightGBM Java
build.gradle
lightgbm4j 가 필요합니다.
dependencies {
implementation 'io.github.metarank:lightgbm4j:4.3.0-1'
implementation group: 'com.google.guava', name: 'guava', version: '11.0.2'
}
Example
package ai.incredible.lightgbm;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
import com.microsoft.ml.lightgbm.PredictionType;
import io.github.metarank.lightgbm4j.LGBMBooster;
import java.io.File;
import java.util.Arrays;
public class Main {
static private final String MODEL_PATH = "/home/anderson/Desktop/model.txt";
static private final String DATA_PARQUET_DIR = "/tmp/lightgbm4j/";
@lombok.SneakyThrows
public static void main(String[] args) {
File file = new File(MODEL_PATH);
String modelContent;
modelContent = Files.toString(file, Charsets.UTF_8);
LGBMBooster model = LGBMBooster.loadModelFromString(modelContent);
System.out.println(model);
float[] input =
new float[] { 0.700720f, 1.287160f, -2.085664f, -0.004941f, 0.249742f, -0.323739f,
-1.946551f, 1.496363f };
double[] pred = model.predictForMat(input, 1, 8, true,
PredictionType.C_API_PREDICT_NORMAL);
System.out.println(Arrays.toString(pred));
}
}