Случайный лес: особенность важности оригинальной маркировки - PullRequest
0 голосов
/ 18 апреля 2020

Я использую стандартный scikit-learn (0.22) конвейер (фаза препроцессора + фаза оценщика), чтобы выполнить RandomizedSearchCV для некоторых некоторых параметров. после того, как я получу свою «лучшую» модель, я хочу посмотреть на feature_importance (и алгоритм случайного леса позволяет это сделать). но тогда я не знаю, какая переменная относится к чему. Я теряю всю маркировку . Вы знаете, как перепроектировать имена переменных? (особенно, когда присутствует OneHotEncoding и присутствуют цифры c и категориальные особенности)

код ниже.

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder, LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.model_selection import RandomizedSearchCV
from sklearn.pipeline import Pipeline

def build_pipeline(categorical_features, numeric_features):

    numeric_transformer = Pipeline(steps=[
        ('imputer', SimpleImputer(strategy='median')),
        ('scaler', StandardScaler())
    ])

    categorical_transformer = Pipeline(steps=[
        ('imputer', SimpleImputer(strategy='most_frequent', fill_value='missing')),
        ('onehot', OneHotEncoder(handle_unknown='ignore')),
    ])

    preprocessor = ColumnTransformer(
        transformers=[
            ('num', numeric_transformer, numeric_features),
            ('cat', categorical_transformer, categorical_features)
        ])

    return preprocessor

preprocessor = build_pipeline(categorical_features, numeric_features)

pipeline_rf = Pipeline(steps=[
    ('preprocessor', preprocessor),
    ('estimator', RandomForestClassifier())
])

# Create the grid for random CV
params= {'estimator__n_estimators': [10, 20],}

rf_grid_search = RandomizedSearchCV(pipeline_rf, params, n_iter=2, scoring='accuracy')

# fit model
rf_grid_search.fit(X, Y)

fit_model = rf_grid_search.best_estimator_

print(pd.Series(fit_model.steps[1][1].feature_importances_)
...