从管道获取模型属性

Getting model attributes from pipeline

我通常会得到 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_ 等属性。)

你看过文档了吗:http://scikit-learn.org/dev/modules/pipeline.html 我觉得已经很清楚了。

更新:在 0.21 中你可以只使用方括号:

pipeline['pca']

或指数

pipeline[1]

有两种方法可以到达管道中的步骤,使用索引或使用您提供的字符串名称:

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

这将为您提供 PCA 对象,您可以在该对象上获取组件。 使用 named_steps,您还可以将属性访问与允许自动完成的 . 一起使用:

pipeline.names_steps.pca.<tab here gives autocomplete>

使用 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_