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()]
.