ML (Regression)
FHEXGBoostRegressor¶
Demonstrates the FHEXGBoostRegressor class. Compiles and tests its simulate vs predict logic.
In [ ]:
Copied!
from concrete_fhe_toolkit.ml.regression import FHEXGBoostRegressor
import numpy as np
model = FHEXGBoostRegressor(trees=[{'feature': 0, 'threshold': 1, 'left': 0, 'right': 1}])
inputset = [[1, 2], [0, 0]]
model.compile(inputset)
_successes = 0
for inp in inputset:
try:
expected = model.simulate(inp)
fhe_res = model.predict(inp)
if isinstance(expected, (list, np.ndarray)) or hasattr(expected, '__iter__'):
np.testing.assert_array_equal(fhe_res, expected)
else:
assert int(fhe_res) == int(expected)
except AssertionError:
raise
except Exception as e:
print(f'Skipping {inp} due to bounds or other error: {e}')
else:
_successes += 1
assert _successes > 0, 'FHEXGBoostRegressor: all inputs were skipped'
print(f'FHEXGBoostRegressor model compiled and tested successfully! ({_successes}/{len(inputset)})')
from concrete_fhe_toolkit.ml.regression import FHEXGBoostRegressor
import numpy as np
model = FHEXGBoostRegressor(trees=[{'feature': 0, 'threshold': 1, 'left': 0, 'right': 1}])
inputset = [[1, 2], [0, 0]]
model.compile(inputset)
_successes = 0
for inp in inputset:
try:
expected = model.simulate(inp)
fhe_res = model.predict(inp)
if isinstance(expected, (list, np.ndarray)) or hasattr(expected, '__iter__'):
np.testing.assert_array_equal(fhe_res, expected)
else:
assert int(fhe_res) == int(expected)
except AssertionError:
raise
except Exception as e:
print(f'Skipping {inp} due to bounds or other error: {e}')
else:
_successes += 1
assert _successes > 0, 'FHEXGBoostRegressor: all inputs were skipped'
print(f'FHEXGBoostRegressor model compiled and tested successfully! ({_successes}/{len(inputset)})')