Получение атрибутов модели из конвейера 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_