Created
November 18, 2020 06:42
-
-
Save noklam/0a1d261318621227c3bac30a50a0301b to your computer and use it in GitHub Desktop.
lightgbm_bug_trains.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# TRAINS - Example of LightGBM integration | |
# | |
import lightgbm as lgb | |
import pandas as pd | |
from sklearn.metrics import mean_squared_error | |
from trains import Task | |
task = Task.init(project_name="examples", task_name="LIGHTgbm") | |
print('Loading data...') | |
# Load or create your dataset | |
df_train = pd.read_csv( | |
'https://raw.githubusercontent.com/microsoft/LightGBM/master/examples/regression/regression.train', | |
header=None, sep='\t' | |
) | |
df_test = pd.read_csv( | |
'https://raw.githubusercontent.com/microsoft/LightGBM/master/examples/regression/regression.test', | |
header=None, sep='\t' | |
) | |
y_train = df_train[0] | |
y_test = df_test[0] | |
X_train = df_train.drop(0, axis=1) | |
X_test = df_test.drop(0, axis=1) | |
# Create dataset for lightgbm | |
lgb_train = lgb.Dataset(X_train, y_train) | |
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train) | |
# Specify your configurations as a dict | |
params = { | |
'boosting_type': 'gbdt', | |
'objective': 'regression', | |
'metric': {'l2', 'l1'}, | |
'num_leaves': 31, | |
'learning_rate': 0.05, | |
'feature_fraction': 0.9, | |
'bagging_fraction': 0.8, | |
'bagging_freq': 5, | |
'verbose': 0 | |
} | |
print('Starting training...') | |
# Train | |
gbm = lgb.train( | |
params=params, | |
lgb_train=lgb_train, | |
num_boost_round=20, | |
valid_sets=lgb_eval, | |
early_stopping_rounds=5 | |
) | |
print('Saving model...') | |
# Save model to file | |
gbm.save_model('model.txt') | |
print('Loading model to predict...') | |
# Load model to predict | |
bst = lgb.Booster(model_file='model.txt') | |
# Can only predict with the best iteration (or the saving iteration) | |
y_pred = bst.predict(X_test) | |
# Eval with loaded model | |
print("The rmse of loaded model's prediction is:", mean_squared_error(y_test, y_pred) ** 0.5) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment