python - 如何在python中的sklearn中获取不同管道中的特征名称

标签 python machine-learning scikit-learn classification pipeline

我正在使用以下代码 ( source ) 连接多个特征提取方法。

from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

iris = load_iris()

X, y = iris.data, iris.target

pca = PCA(n_components=2)
selection = SelectKBest(k=1)

# Build estimator from PCA and Univariate selection:
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

# Use combined features to transform dataset:
X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")

svm = SVC(kernel="linear")

# Do grid search over k, n_components and C:
pipeline = Pipeline([("features", combined_features), ("svm", svm)])

param_grid = dict(features__pca__n_components=[1, 2, 3],
                  features__univ_select__k=[1, 2],
                  svm__C=[0.1, 1, 10])

grid_search = GridSearchCV(pipeline, param_grid=param_grid, cv=5, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)

我想从上面的代码中获取所选功能的名称。

为此,我使用了grid_search.best_estimator_.support_。但是,这返回了一个错误:

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

有没有办法在 python 中的 sklearn 中获取如上面代码所示的选定的特征名称

如果需要,我很乐意提供更多详细信息。

最佳答案

这是我了解最终特征的方法,由best_estimator_使用

>>> features = grid_search.best_estimator_.named_steps['features']

# number of components chosen from pca
>>> pca=features.transformer_list[0][1]

>>> pca.n_components
3

# features chosen by selectKbest
>>> select_k_best=features.transformer_list[1][1]

>>> select_k_best.get_support()
array([False, False,  True, False])

关于python - 如何在python中的sklearn中获取不同管道中的特征名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672174/

相关文章:

python - 如何在 Keras 中实现 Sklearn Metric 作为 Metric?

python - sklearn 交叉验证遇到 JoblibValueError

Python在一行代码上运行速度极慢

python - 使用 pypyodbc 更新数据库

python - 如何反向查询OnetoOne Django

python - 有条件的 `ctypedef` 与 Cython

python - 在两个 pandas 数据框中查找匹配值并从匹配行返回一个值

machine-learning - 这些数字在暗网中意味着什么?

machine-learning - keras的输入层可以接受自定义输入吗?

python - 所有分类算法列表