如何在 python 中的 sklearn 中的不同管道中获取特征名称
Posted
技术标签:
【中文标题】如何在 python 中的 sklearn 中的不同管道中获取特征名称【英文标题】:How to get the feature names in a different pipeline in sklearn in python 【发布时间】:2019-09-04 10:21:35 【问题描述】:我正在使用以下代码 (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中获取选择的特征名称如上代码所示?
如果需要,我很乐意提供更多详细信息。
【问题讨论】:
它可能与以下 SO ***.com/questions/36829875/… 重复 【参考方案1】:这是我了解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])
【讨论】:
非常感谢。如果您知道这个问题的答案,请告诉我:***.com/questions/55671530/… 非常感谢 :)以上是关于如何在 python 中的 sklearn 中的不同管道中获取特征名称的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python 中的 sklearn 中获取 GridSearchCV 中的选定功能
如何在python中的sklearn中标记RandomForestRegressor中的特殊情况
如何在 python 中的 SVM sklearn 数据中绘制决策边界?