Preprocesamiento de características de variables continuas y categóricas (de tipo entero) con scikit-learn

Los principales objectives son los siguientes:

1) Aplicar StandardScaler a variables continuas

2) Aplicar LabelEncoder y OnehotEncoder a variables categóricas

Las variables continuas deben escalarse, pero al mismo tiempo, un par de variables categóricas también son de tipo entero. La aplicación de StandardScaler daría lugar a efectos no deseados.

Por otro lado, el StandardScaler escalaría las variables categóricas basadas en enteros, lo que tampoco es lo que hacemos.

Dado que las variables continuas y las categóricas se mezclan en un solo DataFrame de Pandas , ¿cuál es el flujo de trabajo recomendado para abordar este tipo de problema?

El mejor ejemplo para ilustrar mi punto es el conjunto de datos de Kaggle Bike Sharing Demand , donde la season y el weather son variables categóricas enteras

Echa un vistazo al meta-transformador sklearn_pandas.DataFrameMapper . Úselo como el primer paso en su canalización para realizar operaciones de ingeniería de datos en columnas:

 mapper = DataFrameMapper( [(continuous_col, StandardScaler()) for continuous_col in continuous_cols] + [(categorical_col, LabelBinarizer()) for categorical_col in categorical_cols] ) pipeline = Pipeline( [("mapper", mapper), ("estimator", estimator)] ) pipeline.fit_transform(df, df["y"]) 

Además, debe usar sklearn.preprocessing.LabelBinarizer lugar de una lista de [LabelEncoder(), OneHotEncoder()] .