""" Inspect model_odc.joblib to see what it actually contains """ import joblib from pathlib import Path model_path = Path("model_train/model_odc.joblib") if model_path.exists(): print("Loading model_odc.joblib...") model_data = joblib.load(model_path) print(f"\nModel type: {type(model_data)}") print(f"Model class: {model_data.__class__.__name__}") # Check if it's a dict if isinstance(model_data, dict): print(f"\nModel is a dict with keys: {model_data.keys()}") model = model_data.get('model') else: model = model_data print(f"\nActual model type: {type(model)}") print(f"Actual model class: {model.__class__.__name__}") # Try to get feature info if hasattr(model, 'n_features_in_'): print(f"\nn_features_in_: {model.n_features_in_}") if hasattr(model, 'feature_names_in_'): print(f"feature_names_in_: {model.feature_names_in_}") # If it's a GridSearchCV if hasattr(model, 'best_estimator_'): print(f"\nThis is a GridSearchCV!") print(f"Best estimator: {model.best_estimator_}") best_est = model.best_estimator_ if hasattr(best_est, 'steps'): print(f"\nPipeline steps:") for step_name, step in best_est.steps: print(f" - {step_name}: {step.__class__.__name__}") if hasattr(step, 'n_features_in_'): print(f" n_features_in_: {step.n_features_in_}") # If it's a Pipeline if hasattr(model, 'steps'): print(f"\nThis is a Pipeline!") print(f"Pipeline steps:") for step_name, step in model.steps: print(f" - {step_name}: {step.__class__.__name__}") if hasattr(step, 'n_features_in_'): print(f" n_features_in_: {step.n_features_in_}") # Try to get booster for XGBoost try: if hasattr(model, 'get_booster'): print(f"\nXGBoost num_features: {model.get_booster().num_features()}") except: pass else: print(f"Model file not found: {model_path}")