¿Cómo podemos conocer los nombres de las características (columnas) (encabezado) seleccionadas y omitidas usando scikit-learn?

Estoy explicando el escenario con un dato:

Ex. conjunto de datos.

GA_ID PN_ID PC_ID MBP_ID GR_ID AP_ID class 0.033 6.652 6.681 0.194 0.874 3.177 0 0.034 9.039 6.224 0.194 1.137 0 0 0.035 10.936 10.304 1.015 0.911 4.9 1 0.022 10.11 9.603 1.374 0.848 4.566 1 0.035 2.963 17.156 0.599 0.823 9.406 1 0.033 10.872 10.244 1.015 0.574 4.871 1 0.035 21.694 22.389 1.015 0.859 9.259 1 0.035 10.936 10.304 1.015 0.911 4.9 1 0.035 10.936 10.304 1.015 0.911 4.9 1 0.035 10.936 10.304 1.015 0.911 4.9 0 0.036 1.373 12.034 0.35 0.259 5.723 0 0.033 9.831 9.338 0.35 0.919 4.44 0 

El paso 1 de selección de funciones y su salida vienen: VarianceThreshol

  PN_ID PC_ID MBP_ID GR_ID AP_ID class 6.652 6.681 0.194 0.874 3.177 0 9.039 6.224 0.194 1.137 0 0 10.936 10.304 1.015 0.911 4.9 1 10.11 9.603 1.374 0.848 4.566 1 2.963 17.156 0.599 0.823 9.406 1 10.872 10.244 1.015 0.574 4.871 1 21.694 22.389 1.015 0.859 9.259 1 10.936 10.304 1.015 0.911 4.9 1 10.936 10.304 1.015 0.911 4.9 1 10.936 10.304 1.015 0.911 4.9 0 1.373 12.034 0.35 0.259 5.723 0 9.831 9.338 0.35 0.919 4.44 0 

el paso 2 de selección de funciones y su salida: selección de funciones basada en árbol (por ejemplo, desde klearn.ensemble import ExtraTreesClassifier)

 PN_ID MBP_ID GR_ID AP_ID class 6.652 0.194 0.874 3.177 0 9.039 0.194 1.137 0 0 10.936 1.015 0.911 4.9 1 10.11 1.374 0.848 4.566 1 2.963 0.599 0.823 9.406 1 10.872 1.015 0.574 4.871 1 21.694 1.015 0.859 9.259 1 10.936 1.015 0.911 4.9 1 10.936 1.015 0.911 4.9 1 10.936 1.015 0.911 4.9 0 1.373 0.35 0.259 5.723 0 9.831 0.35 0.919 4.44 0 

Aquí podemos concluir que comenzamos con 6 columnas (características) y una etiqueta de clase y en el paso final lo reducimos a 4 características y una etiqueta de clase. Las columnas GA_ID y PC_ID se han eliminado, mientras que el modelo se ha construido utilizando las características PN_ID, MBP_ID, GR_ID y AP_ID.

Pero desafortunadamente, cuando realicé la selección de funciones con los métodos disponibles en la biblioteca de scikit-learn, descubrí que solo devuelve la forma de los datos y los datos reducidos sin el nombre de las funciones seleccionadas y omitidas.

Escribí muchos códigos estúpidos de Python (ya que no tengo mucha experiencia como progtwigdor) para encontrar la respuesta, pero no tuve éxito.

amablemente por favor sugiéreme alguna forma de salir de ella gracias

(Nota: en particular, para esta publicación nunca he realizado ningún método de selección de características en el conjunto de datos de ejemplo dado, sino que eliminé la columna al azar para explicar el caso)

Quizás este código y las explicaciones comentadas ayuden (adaptado de aquí ).

 import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.ensemble import ExtraTreesClassifier # Build a classification task using 3 informative features X, y = make_classification(n_samples=1000, n_features=10, n_informative=3, n_redundant=0, n_repeated=0, n_classes=2, random_state=0, shuffle=False) # Build a forest and compute the feature importances forest = ExtraTreesClassifier(n_estimators=250, random_state=0) forest.fit(X, y) importances = forest.feature_importances_ #array with importances of each feature idx = np.arange(0, X.shape[1]) #create an index array, with the number of features features_to_keep = idx[importances > np.mean(importances)] #only keep features whose importance is greater than the mean importance #should be about an array of size 3 (about) print features_to_keep.shape x_feature_selected = X[:,features_to_keep] #pull X values corresponding to the most important features print x_feature_selected