web-dev-qa-db-ja.com

scikit-learnを使用した(整数型の)連続変数とカテゴリ変数の両方の機能前処理

主な目標は次のとおりです。

1)連続変数にStandardScalerを適用します

2)LabelEncoderOnehotEncoderをカテゴリ変数に適用します

連続変数はスケーリングする必要がありますが、同時に、いくつかのカテゴリ変数も整数型です。 StandardScalerを適用すると、望ましくない影響が発生します。

反対に、StandardScalerは整数ベースのカテゴリ変数をスケーリングしますが、これも私たちではありません。

連続変数とカテゴリ変数は単一のPandas DataFrameに混在しているため、この種の問題に取り組むために推奨されるワークフローは何ですか?

私のポイントを説明するための最良の例は、 Kaggle Bike Sharing Demand データセットです。ここで、seasonweatherは整数のカテゴリ変数です。

9
James Wong

_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_を使用する必要があります。

11
user1808924