Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
# todo: X may be optional
# todo: allow to use a list of scores for approximation, instead of
# todo: decision_scores
self.approx_flags, _ = build_codes(self.base_estimators,
self.approx_clf_list,
self.approx_ng_clf_list,
self.approx_flag_global)
n_estimators_list, starts, n_jobs = _partition_estimators(
self.n_estimators, n_jobs=self.n_jobs)
all_approx_results = Parallel(n_jobs=n_jobs, verbose=True)(
delayed(_parallel_approx_estimators)(
n_estimators_list[i],
self.base_estimators[starts[i]:starts[i + 1]],
X, # if it is a PyOD model, we do not need this
self.n_estimators,
self.approx_flags[starts[i]:starts[i + 1]],
self.approx_clf,
self.jl_transformers_[starts[i]:starts[i + 1]],
verbose=True)
for i in range(n_jobs))
# print('Balanced Scheduling Total Test Time:', time.time() - start)
self.approximators = _unfold_parallel(all_approx_results, n_jobs)
return self
approx_clf = RandomForestRegressor(n_estimators=100)
approx_flags, base_estimator_names = build_codes(base_estimators,
approx_clf_list,
approx_ng_clf_list,
approx_flag_global)
n_estimators_list, starts, n_jobs = _partition_estimators(n_estimators,
n_jobs=n_jobs)
print(starts) # this is the list of being split
start = time.time()
# TODO: here has a bug. For some reason, approximators do not match approx_flags
all_approx_results = Parallel(n_jobs=n_jobs, max_nbytes=None, verbose=True)(
delayed(_parallel_approx_estimators)(
n_estimators_list[i],
trained_estimators[starts[i]:starts[i + 1]],
X, # if it is a PyOD model, we do not need this
n_estimators,
approx_flags[starts[i]:starts[i + 1]],
approx_clf,
verbose=True)
for i in range(n_jobs))
print('Balanced Scheduling Total Test Time:', time.time() - start)
approximators = _unfold_parallel(all_approx_results, n_jobs)
# %% Second BPS for prediction
###############################################################################