Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
Determinar si las columnas de un conjunto de datos son invariantes bajo cualquier transformador Scikit-Learn dado

Dado un transformador sklearn t , ¿hay alguna forma de determinar si t cambia el orden de las columnas/columnas de cualquier conjunto de datos de entrada X , sin aplicarlo a los datos?

Por ejemplo, con t = sklearn.preprocessing.StandardScaler hay un mapeo 1 a 1 entre las columnas de X y t.transform(X) , a saber, X[:, i] -> t.transform(X)[:, i] , mientras que obviamente este no es el caso para sklearn.decomposition.PCA .

Un corolario de eso sería: ¿Podemos saber cómo cambiarán las columnas de la entrada al aplicar t , por ejemplo, qué columnas elige un sklearn.feature_selection.SelectKBest ya ajustado?

No estoy buscando soluciones para transformadores específicos , sino una solución aplicable a todos o al menos a una amplia selección de transformadores.

Siéntase libre de implementar su propia clase Pipeline o contenedor si es necesario.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No todos sus "transformadores" tendrían el método .get_feature_names_out . Su implementación se discute en sklearn github . En el mismo enlace, puede ver que hay, para citar a @thomasjpfan, una clase _OneToOneFeatureMixin utilizada por transformadores con una correspondencia simple uno a uno entre las características de entrada y salida.

Restringido a sklearn, podemos verificar si el transformador o estimador es una subclase de _OneToOneFeatureMixin , por ejemplo:

 from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler from sklearn.feature_selection import SelectKBest from sklearn.base import _OneToOneFeatureMixin tf = {'pca':PCA(),'standardscaler':StandardScaler(),'kbest':SelectKBest()} [i+":"+str(issubclass(type(tf[i]),_OneToOneFeatureMixin)) for i in tf.keys()] ['pca:False', 'standardscaler:True', 'kbest:False']

Estos serían el código fuente de _OneToOneFeatureMixin

over 4 years ago · Santiago Trujillo Denunciar

0

Encontré una respuesta parcial. Tanto StandardScaler como SelectKBest tienen métodos .get_feature_names_out . No encontré el tiempo para investigar más.

 from numpy.random import RandomState import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.feature_selection import SelectKBest from sklearn.linear_model import LassoCV rng = RandomState() # Make some data slopes = np.array([-1., 1., .1]) X = pd.DataFrame( data = np.linspace(-1,1,500)[:, np.newaxis] + rng.random((500, 3)), columns=["foo", "bar", "baz"] ) y = pd.Series(data=np.linspace(-1,1, 500) + rng.rand((500))) # Test Transformers scaler = StandardScaler().fit(X) selector = SelectKBest(k=2).fit(X, y) print(scaler.get_feature_names_out()) print(selector.get_feature_names_out())
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda