Spaces:
Sleeping
Sleeping
| # export_model_artifacts.py | |
| import joblib, xgboost as xgb, os | |
| p = "best_overall_XGBoost.joblib" | |
| m = joblib.load(p) | |
| print("Loaded:", type(m)) | |
| # If pipeline, extract preprocessing and classifier | |
| preproc_path = None | |
| json_path = None | |
| clf = m | |
| try: | |
| # sklearn Pipeline -> try to find the xgb step | |
| from sklearn.pipeline import Pipeline | |
| if isinstance(m, Pipeline): | |
| # Save pipeline without the final estimator | |
| steps = m.steps | |
| # assume last step is classifier | |
| *prefix, (last_name, last_obj) = steps | |
| # Build preprocessor pipeline if any prefix exists | |
| if prefix: | |
| from sklearn.pipeline import Pipeline as SKPipeline | |
| preproc = SKPipeline(prefix) | |
| preproc_path = "preprocessor.joblib" | |
| joblib.dump(preproc, preproc_path) | |
| print("Saved preprocessor to", preproc_path) | |
| clf = last_obj | |
| except Exception as e: | |
| print("Not a Pipeline or failed to extract pipeline:", e) | |
| # If clf is XGBClassifier, get booster | |
| try: | |
| booster = None | |
| if hasattr(clf, "get_booster"): | |
| booster = clf.get_booster() | |
| elif isinstance(clf, xgb.Booster): | |
| booster = clf | |
| else: | |
| print("Classifier type:", type(clf)) | |
| if booster is not None: | |
| json_path = "best_overall_XGBoost.json" | |
| booster.save_model(json_path) | |
| print("Saved booster JSON to", json_path) | |
| except Exception as e: | |
| print("Failed to export booster JSON:", e) | |
| import traceback; traceback.print_exc() | |