1

Я использую модель трубопровода SKlearn для извлечения и создания единой функции, которая затем отправляется в произвольный классификатор леса, в то время как некоторые экстракторы функций могут быть удалены или добавлены позже, рассмотрим следующая структура:ScikitLearn Извлечение имен функций из FeatureUnion внутри конвейера

model = Pipeline([ 
        ('feature_extract', 
        FeatureUnion([ 
            ('feature A', extracorA()), 
            ('feature B', ExtractorB()), 
            ('feature C', FeatureUnion([ 
                 ('c1', C1Extractor()) 
                 ('c2', C2Extractor())])) 
                       )]), 
        ('random_forest', RandomForestRegressor(...)))]) 

Я хотел бы улучшить прогнозы случайного леса, проверив свойство RandomForstRegressor

feature_importances_ 

мне удалось получить список с помощью:

model._final_estimator.feature_importances_ 

А теперь я хотел бы динамически связать между номером столбца в feature_importances_ индекс к художественному имя/шаг в трубопроводе.

Есть ли предпочтительный способ сохранить/получить имя функции внутри объединения функций? Как вы могли бы решить эту проблему?

ответ

-1

Чтобы сохранить все в динамической форме, вы можете использовать приведенную ниже функцию как реализацию преобразования отдельного класса и сделать объект класса частью вашего конвейера. Вы можете изменить параметр оценки. Я думаю, что Grid Search в составе трубопровода - это то, что вы ищете ...

def best_config(model, parameters, train_instances, judgements): 
    clf = GridSearchCV(model, parameters, cv=5, 
         scoring="accuracy", verbose=5, n_jobs=4) 
    clf.fit(train_instances, judgements) 
    best_estimator = clf.best_estimator_ 

    return [str(clf.best_params_), clf.best_score_, 
      best_estimator] 
+1

Помогла ли эта проблема решить эту проблему? Я хотел бы знать, как Avi реализовал этот ответ или использовал другой подход. Благодаря! – wsankey

+1

Это, похоже, не отвечает на заданный вопрос – joc

Смежные вопросы