MCPcopy Create free account
hub / github.com/dmlc/xgboost / run_model_json_io

Method run_model_json_io

tests/python/test_model_io.py:39–86  ·  view source on GitHub ↗
(self, parameters: dict, ext: str)

Source from the content-addressed store, hash-verified

37
38class TestBoosterIO:
39 def run_model_json_io(self, parameters: dict, ext: str) -> None:
40 config = xgb.config.get_config()
41 assert config["verbosity"] == 1
42
43 if ext == "ubj" and tm.no_ubjson()["condition"]:
44 pytest.skip(tm.no_ubjson()["reason"])
45
46 loc = locale.getpreferredencoding(False)
47 model_path = "test_model_json_io." + ext
48 j_model = json_model(model_path, parameters)
49 assert isinstance(j_model["learner"], dict)
50
51 bst = xgb.Booster(model_file=model_path)
52
53 bst.save_model(fname=model_path)
54 if ext == "ubj":
55 import ubjson
56
57 with open(model_path, "rb") as ubjfd:
58 j_model = ubjson.load(ubjfd)
59 else:
60 with open(model_path, "r") as fd:
61 j_model = json.load(fd)
62
63 assert isinstance(j_model["learner"], dict)
64
65 os.remove(model_path)
66 assert locale.getpreferredencoding(False) == loc
67
68 json_raw = bst.save_raw(raw_format="json")
69 from_jraw = xgb.Booster()
70 from_jraw.load_model(json_raw)
71
72 ubj_raw = bst.save_raw(raw_format="ubj")
73 from_ubjraw = xgb.Booster()
74 from_ubjraw.load_model(ubj_raw)
75
76 raw_json = bst.save_raw(raw_format="json")
77 pretty = json.dumps(json.loads(raw_json), indent=2) + "\n\n"
78 bst.load_model(bytearray(pretty, encoding="ascii"))
79
80 rng = np.random.default_rng()
81 X = rng.random(size=from_jraw.num_features() * 10).reshape(
82 (10, from_jraw.num_features())
83 )
84 predt_from_jraw = from_jraw.predict(xgb.DMatrix(X))
85 predt_from_bst = bst.predict(xgb.DMatrix(X))
86 np.testing.assert_allclose(predt_from_jraw, predt_from_bst)
87
88 @pytest.mark.parametrize("ext", ["json", "ubj"])
89 def test_model_json_io(self, ext: str) -> None:

Callers 1

test_model_json_ioMethod · 0.95

Calls 10

save_modelMethod · 0.95
save_rawMethod · 0.95
load_modelMethod · 0.95
num_featuresMethod · 0.95
predictMethod · 0.95
json_modelFunction · 0.85
BoosterMethod · 0.80
removeMethod · 0.80
loadMethod · 0.45
DMatrixMethod · 0.45

Tested by

no test coverage detected