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

183
Vistas
Conservar el orden de las columnas después de aplicar sklearn.compose.ColumnTransformer

Estoy usando los módulos Pipeline y ColumnTransformer de la biblioteca sklearn para realizar la ingeniería de funciones en mi conjunto de datos.

El conjunto de datos inicialmente se ve así:

fecha núm_bloque_fecha tienda_id Identificación del artículo precio del articulo
02.01.2013 0 59 22154 999.00
03.01.2013 0 25 2552 899.00
05.01.2013 0 25 2552 899.00
06.01.2013 0 25 2554 1709.05
15.01.2013 0 25 2555 1099.00
 $> data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 2935849 entries, 0 to 2935848 Data columns (total 6 columns): # Column Dtype --- ------ ----- 0 date object 1 date_block_num object 2 shop_id object 3 item_id object 4 item_price float64 dtypes: float64(2), int64(3), object(1) memory usage: 134.4+ MB

Entonces tengo las siguientes transformaciones:

 num_column_transformer = ColumnTransformer( transformers=[ ("std_scaler", StandardScaler(), make_column_selector(dtype_include=np.number)), ], remainder="passthrough" ) num_pipeline = Pipeline( steps=[ ("percent_item_cnt_day_per_shop", PercentOverTotalAttributeWholeAdder( attribute_percent_name="shop_id", attribute_total_name="item_cnt_day", new_attribute_name="%_item_cnt_day_per_shop") ), ("percent_item_cnt_day_per_item", PercentOverTotalAttributeWholeAdder( attribute_percent_name="item_id", attribute_total_name="item_cnt_day", new_attribute_name="%_item_cnt_day_per_item") ), ("percent_sales_per_shop", SalesPerAttributeOverTotalSalesAdder( attribute_percent_name="shop_id", new_attribute_name="%_sales_per_shop") ), ("percent_sales_per_item", SalesPerAttributeOverTotalSalesAdder( attribute_percent_name="item_id", new_attribute_name="%_sales_per_item") ), ("num_column_transformer", num_column_transformer), ] )

Los primeros cuatro Transformers crean cuatro nuevas variables numéricas diferentes y el último aplica StandardScaler sobre todos los valores numéricos del conjunto de datos.

Después de ejecutarlo, obtengo los siguientes datos:

0 1 2 3 4 5 6 7 8
-0.092652 -0.765612 -0.173122 -0.756606 -0.379775 02.01.2013 0 59 22154
-0.092652 1.557684 -0.175922 1.563224 -0.394319 03.01.2013 0 25 2552
-0.856351 1.557684 -0.175922 1.563224 -0.394319 05.01.2013 0 25 2552
-0.092652 1.557684 -0.17613 1.563224 -0.396646 06.01.2013 0 25 2554
-0.092652 1.557684 -0.173278 1.563224 -0.380647 15.01.2013 0 25 2555

Me gustaría tener el siguiente resultado:

fecha núm_bloque_fecha tienda_id Identificación del artículo precio del articulo %_item_cnt_day_per_shop %_item_cnt_day_per_item %_ventas_por_tienda %_ventas_por_artículo
02.01.2013 0 59 22154 -0.092652 -0.765612 -0.173122 -0.756606 -0.379775
03.01.2013 0 25 2552 -0.092652 1.557684 -0.175922 1.563224 -0.394319
05.01.2013 0 25 2552 -0.856351 1.557684 -0.175922 1.563224 -0.394319
06.01.2013 0 25 2554 -0.092652 1.557684 -0.17613 1.563224 -0.396646
15.01.2013 0 25 2555 -0.092652 1.557684 -0.173278 1.563224 -0.380647

Como puede ver, las columnas 5 , 6 , 7 y 8 de la salida corresponden a las primeras cuatro columnas del conjunto de datos original. Por ejemplo, no sé dónde se encuentra la función item_price en la tabla de salida.

  1. ¿Cómo podría preservar el orden de las columnas y los nombres? Después de eso, quiero hacer ingeniería de características sobre variables categóricas y mis Transformers hacen uso del nombre de la columna de características.
  2. ¿Estoy usando correctamente la API de Scikit-Learn?
over 4 years ago · Santiago Trujillo
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