69

値を取るカテゴリ機能、色があるとします

[「赤」、「青」、「緑」、「オレンジ」]、

それを使用して、ランダム フォレスト内の何かを予測したいと考えています。ワンホット エンコードする場合 (つまり、4 つのダミー変数に変更する場合)、4 つのダミー変数が実際には 1 つの変数であることを sklearn に伝えるにはどうすればよいですか? 具体的には、sklearn がさまざまなノードで使用する機能をランダムに選択する場合、赤、青、緑、オレンジのダミーを一緒に含めるか、それらのいずれも含めないでください。

これを行う方法はないと聞いたことがありますが、数値などとして任意にコーディングせずにカテゴリ変数を処理する方法があるに違いないと思います。

4

5 に答える 5

54

いいえ、ありません。誰かがこれに取り組んでおり、パッチはいつかメインラインにマージされる可能性がありますが、現時点では、ダミー (ワンホット) エンコーディングを除いて、scikit-learn のカテゴリ変数はサポートされていません。

于 2014-07-12T17:01:13.260 に答える
16

カテゴリ変数を一連のダミー変数にする必要があります。はい、私はそれが面倒で不必要に思えることを知っていますが、それがsklearnの仕組みです。パンダを使用している場合。pd.get_dummies を使用すると、非常にうまく機能します。

于 2016-02-18T02:36:12.823 に答える
-2

以下のアプローチを使用して、カテゴリ変数をランダム フォレストに直接フィードできます。

  1. 最初に、sklearn ラベル エンコーダーを使用して機能のカテゴリを数値に変換します。
  2. 次に、ラベル エンコードされた機能タイプを文字列 (オブジェクト) に変換します。
le=LabelEncoder()
df[col]=le.fit_transform(df[col]).astype('str')

上記のコードはあなたの問題を解決します

于 2021-10-10T14:20:06.327 に答える