Source code for src.post_process

"""
Analyze a trained model.
"""
import logging
import typing

import pandas as pd
import sklearn.pipeline

logger = logging.getLogger(__name__)


[docs]def get_feature_importance( trained_pipeline: sklearn.pipeline.Pipeline, numeric_features: typing.List[str] ) -> pd.Series: """ Get feature importance measures from a trained model. Args: trained_pipeline (:obj:`sklearn.pipeline.Pipeline`): Fitted model pipeline numeric_features (list(str)): Names of numeric features Returns: :obj:`pandas.Series` containing each feature and its importance """ # Retrieve categorical features from the one-hot encoder # (numeric features need to be passed in manually) categorical_features = list(trained_pipeline["preprocessor"] .transformers_[1][1] .get_feature_names()) features = numeric_features + categorical_features # Fetch importance values (without labels) from the model itself importances = trained_pipeline["predictor"].feature_importances_ return pd.Series(data=importances, index=features)