Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda