JSON configuration IO. (#5111)
* Add saving/loading JSON configuration. * Implement Python pickle interface with new IO routines. * Basic tests for training continuation.
This commit is contained in:
@@ -2,6 +2,7 @@ import pickle
|
||||
import numpy as np
|
||||
import xgboost as xgb
|
||||
import os
|
||||
import unittest
|
||||
|
||||
|
||||
kRows = 100
|
||||
@@ -14,35 +15,45 @@ def generate_data():
|
||||
return X, y
|
||||
|
||||
|
||||
def test_model_pickling():
|
||||
xgb_params = {
|
||||
'verbosity': 0,
|
||||
'nthread': 1,
|
||||
'tree_method': 'hist'
|
||||
}
|
||||
class TestPickling(unittest.TestCase):
|
||||
def run_model_pickling(self, xgb_params):
|
||||
X, y = generate_data()
|
||||
dtrain = xgb.DMatrix(X, y)
|
||||
bst = xgb.train(xgb_params, dtrain)
|
||||
|
||||
X, y = generate_data()
|
||||
dtrain = xgb.DMatrix(X, y)
|
||||
bst = xgb.train(xgb_params, dtrain)
|
||||
dump_0 = bst.get_dump(dump_format='json')
|
||||
assert dump_0
|
||||
|
||||
dump_0 = bst.get_dump(dump_format='json')
|
||||
assert dump_0
|
||||
filename = 'model.pkl'
|
||||
|
||||
filename = 'model.pkl'
|
||||
with open(filename, 'wb') as fd:
|
||||
pickle.dump(bst, fd)
|
||||
|
||||
with open(filename, 'wb') as fd:
|
||||
pickle.dump(bst, fd)
|
||||
with open(filename, 'rb') as fd:
|
||||
bst = pickle.load(fd)
|
||||
|
||||
with open(filename, 'rb') as fd:
|
||||
bst = pickle.load(fd)
|
||||
with open(filename, 'wb') as fd:
|
||||
pickle.dump(bst, fd)
|
||||
|
||||
with open(filename, 'wb') as fd:
|
||||
pickle.dump(bst, fd)
|
||||
with open(filename, 'rb') as fd:
|
||||
bst = pickle.load(fd)
|
||||
|
||||
with open(filename, 'rb') as fd:
|
||||
bst = pickle.load(fd)
|
||||
assert bst.get_dump(dump_format='json') == dump_0
|
||||
|
||||
assert bst.get_dump(dump_format='json') == dump_0
|
||||
if os.path.exists(filename):
|
||||
os.remove(filename)
|
||||
|
||||
if os.path.exists(filename):
|
||||
os.remove(filename)
|
||||
def test_model_pickling_binary(self):
|
||||
params = {
|
||||
'nthread': 1,
|
||||
'tree_method': 'hist'
|
||||
}
|
||||
self.run_model_pickling(params)
|
||||
|
||||
def test_model_pickling_json(self):
|
||||
params = {
|
||||
'nthread': 1,
|
||||
'tree_method': 'hist',
|
||||
'enable_experimental_json_serialization': True
|
||||
}
|
||||
self.run_model_pickling(params)
|
||||
|
||||
Reference in New Issue
Block a user