2017-10-22 14 views
1

私は、156000行と37列の大きなデータセットを持っています。列は保険の属性を表します。属性は、数値、カテゴリ、英数字の3種類に分類できます。この属性はニューラルネットワークの入力値ですが、NNTは数値データのみを受け入れます。私は、カテゴリと英数字の値をエンコードする必要があります。いくつかの異なる値を含むカテゴリ属性の場合、私は1つのホットメソッドを使用します。カテゴリに1つの列があり、行にその列のカテゴリが含まれている場合は各セルに1または0が入ります。大きなデータセットを持つカテゴリデータのエンコーディング

代わりに、次のコマンドを使用して、あまりにも多くの列数を増加させないように、多くの異なる値が含まれているカテゴリ属性の:

df["ATT1"] = df["ATT1"].astype('category') 
df["ATT2"] = df["ATT2"].astype('category') 
df["ATT1"] = df["ATT1"].cat.codes 
df["ATT2"] = df["ATT2"].cat.codes 

は、カテゴリ属性にオブジェクトの属性を変換し、各カテゴリについて私は整数値を関連付けます。 TensorFlowでモデルを起動すると、繰り返しごとに関数の損失が0になり、精度は1で一定に保たれます。

私はカテゴリ属性をエンコードするのが間違っていると思います。モデルは正しい方法で構築されています。損失関数、精度、出力が正しいということは、別のデータベースを使ってモデルを作成するときです。さまざまな価値のあるカテゴリデータのエンコード方法がありますか?

+0

@ jigasse:埋め込み方法を試すことができます。あなたはTFでワイド・アンド・ディープ・メソッドを見ることができます。 – Beta

答えて

0

カテゴリの機能をサポートするタスクグラディエントブースティングでは、うまくいく可能性があります。 CatBoostをチェックしてくださいhttps://catboost.yandex これを行う場合、前処理フェーズとしてワンホットエンコーディングを使用しないでください。これは、トレーニングの正確さとスピードの両方に影響します。

関連する問題