Получение атрибутов модели из конвейера scikit-learn

Я обычно получаю PCA нагрузки как это:

pca = PCA(n_components=2)
X_t = pca.fit(X).transform(X)
loadings = pca.components_

Если я бегу PCA используя scikit-learn трубопровод...

from sklearn.pipeline import Pipeline
pipeline = Pipeline(steps=[    
('scaling',StandardScaler()),
('pca',PCA(n_components=2))
])
X_t=pipeline.fit_transform(X)

... возможно ли получить нагрузки?

Просто пытаюсь loadings = pipeline.components_ терпит неудачу:

AttributeError: 'Pipeline' object has no attribute 'components_'

Спасибо!

(Также заинтересованы в извлечении атрибутов, таких как coef_ от изучения конвейеров.)

1 ответ

Решение

Вы смотрели на документацию: http://scikit-learn.org/dev/modules/pipeline.html Я чувствую, что это довольно ясно.

Есть два способа добраться до шагов в конвейере, либо используя индексы, либо используя заданные вами имена строк:

pipeline.named_steps['pca']
pipeline.steps[1][1]

Это даст вам объект PCA, на котором вы можете получить компоненты.

Использование Neuraxle

Работать с конвейерами проще с Neuraxle. Например, вы можете сделать это:

from neuraxle.pipeline import Pipeline

# Create and fit the pipeline: 
pipeline = Pipeline([
    StandardScaler(),
    PCA(n_components=2)
])
pipeline, X_t = pipeline.fit_transform(X)

# Get the components: 
pca = pipeline[-1]
components = pca.components_

Вы можете получить доступ к своему PCA тремя разными способами:

  • pipeline['PCA']
  • pipeline[-1]
  • pipeline[1]

Neuraxle - это конвейерная библиотека, построенная на основе scikit-learn, чтобы вывести конвейеры на новый уровень. Он позволяет легко управлять пространствами распределений гиперпараметров, вложенными конвейерами, сохранением и перезагрузкой, обслуживанием REST API и т. Д. Все это сделано для того, чтобы также использовать алгоритмы глубокого обучения и позволить параллельные вычисления.

Вложенные конвейеры:

У вас могут быть конвейеры внутри конвейеров, как показано ниже.

# Create and fit the pipeline: 
pipeline = Pipeline([
    StandardScaler(),
    Identity(),
    Pipeline([
        Identity(),  # Note: an Identity step is a step that does nothing. 
        Identity(),  # We use it here for demonstration purposes. 
        Identity(),
        Pipeline([
            Identity(),
            PCA(n_components=2)
        ])
    ])
])
pipeline, X_t = pipeline.fit_transform(X)

Тогда вам нужно будет сделать это:

# Get the components: 
pca = pipeline["Pipeline"]["Pipeline"][-1]
components = pca.components_
Другие вопросы по тегам