主な目標は次のとおりです。
1)連続変数にStandardScaler
を適用します
2)LabelEncoder
とOnehotEncoder
をカテゴリ変数に適用します
連続変数はスケーリングする必要がありますが、同時に、いくつかのカテゴリ変数も整数型です。 StandardScaler
を適用すると、望ましくない影響が発生します。
反対に、StandardScaler
は整数ベースのカテゴリ変数をスケーリングしますが、これも私たちではありません。
連続変数とカテゴリ変数は単一のPandas
DataFrameに混在しているため、この種の問題に取り組むために推奨されるワークフローは何ですか?
私のポイントを説明するための最良の例は、 Kaggle Bike Sharing Demand データセットです。ここで、season
とweather
は整数のカテゴリ変数です。
_sklearn_pandas.DataFrameMapper
_ メタトランスフォーマーをチェックしてください。これをパイプラインの最初のステップとして使用して、列ごとのデータエンジニアリング操作を実行します。
_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"])
_
また、[LabelEncoder(), OneHotEncoder()]
のリストの代わりに_sklearn.preprocessing.LabelBinarizer
_を使用する必要があります。