ランダムフォレストアルゴリズムを適用して、トレーニングデータセットの精度を見つける必要があります。しかし、私のデータセットのタイプは、カテゴリーと数値の両方です。これらのデータをフィッティングしようとすると、エラーが発生します。
'入力にNaN、無限大、またはdtype(' float32 ')には大きすぎる値が含まれています。
問題はオブジェクトのデータ型です。RFを適用するために変換せずにカテゴリデータを適合させるにはどうすればよいですか?
これが私のコードです。
ランダムフォレストアルゴリズムを適用して、トレーニングデータセットの精度を見つける必要があります。しかし、私のデータセットのタイプは、カテゴリーと数値の両方です。これらのデータをフィッティングしようとすると、エラーが発生します。
'入力にNaN、無限大、またはdtype(' float32 ')には大きすぎる値が含まれています。
問題はオブジェクトのデータ型です。RFを適用するために変換せずにカテゴリデータを適合させるにはどうすればよいですか?
これが私のコードです。
回答:
カテゴリー特徴を数値属性に変換する必要があります。一般的なアプローチは、ワンホットエンコーディングを使用することですが、それが間違いなく唯一のオプションではありません。カテゴリレベルの数が多い変数がある場合は、レベルを組み合わせるか、ハッシュトリックを使用することを検討する必要があります。Sklearnには、いくつかのアプローチが用意されています(「関連項目」セクションを参照してください):1つのホットエンコーダーとハッシュトリック
sklearnにコミットしていない場合、h2oランダムフォレストの実装は、カテゴリ機能を直接処理します。
私の知る限り、このタイプのエラーを取得するにはいくつかの問題があります。1つ目は、データセットに余分なスペースが存在するため、エラーが表示される理由です。次に、Pythonはどのタイプのオブジェクト値でも機能しません。このオブジェクトの値を数値に変換する必要があります。オブジェクトを数値に変換するには、ラベルエンコーダーと1つのホットエンコーダーの2種類のエンコーディングプロセスがあります。ラベルエンコーダーが0からn_classes-1までのオブジェクト値をエンコードし、1つのホットエンコーダーが0から1までの値をエンコードします。私の作業では、あらゆる種類の分類方法にデータを適合させる前に、値を変換するためにラベルエンコーダーを使用し、変換する前に、データセットに空白スペースがありません。