2016-08-10 17 views
0

私は現在Kaggleにタイタニック機械学習の問題にTensorflowを適用しています:https://www.kaggle.com/c/titanic低精度

私のトレーニングデータは891×8(891個のデータポイントと8つの機能)です。目標は、タイタニック号の乗客が生き残ったかどうかを予測することです。だから、バイナリ分類の問題です。

私は単層ニューラルネットワークを使用しています。ここで

optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate, momentum=momentum).minimize(cost) 

は私の質問/問題である:これは私のオプティマイザである

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction,y)) 

:これは私のコスト関数である

私はKaggleへのニューラルネットワークによって行われたいくつかの予測を提出しようとした、と今までのすべての試みは0%の精度を持っています。しかし、最初の10人の乗客の予測をSk-learnからのRandomForestClassifier()の予測に置き換えたとき、精度は50%にまで飛躍しました。

ニューラルネットワークの無能さの私の推測は不適切な訓練データが原因です。だから、私は入力データにノイズを追加することを考えていましたが、どう考えているのか分かりません。

私のトレーニングデータの8つの特徴は、「Pclass」、「Sex」、「Age」、「Fare」、「Child」、「Fam_size」、「Title」、「Mother」です。いくつかはカテゴリー的であり、いくつかは連続的です。

アイデアやリンクは大変ありがとうございます!ありがとうございます。

編集:

私の提出物に間違いがありました。何らかの理由で私の予測はintの代わりにすべて浮動小数点でした。だから、僕はこれでした:

result_df.astype(int) 

はあなたに私の提出形式が間違っていることを指摘してみんなに感謝します。

+1

出力が期待どおりのフォーマットに一致していますか?非常に悪いモデルであっても、精度は0%です。 – polku

+0

はい.csvファイルをチェックして、正確なフォーマットに一致しました。最初はフォーマットも間違っていると思いました。私は英語の綴りと出力が0と1に制限されているかどうかをチェックしました。 – user3436204

+0

私のコードもチェックしましたが、それが正しいと確信しています。興味があれば、コード全体を投稿することができます。 – user3436204

答えて

0

トレーニングデータをローカルでクロスバリデーションし、どのような精度が得られるかを確認してください。 sklearnパッケージには、トレーニングとテストの折り畳みでサンプルを分割するシンプルなk-foldクロスバリデーションユーティリティ(here)があります。あなたはどんな正確さを得ていますか?

バイナリ分類の50%の精度がベースラインであることを忘れないでください。 k倍のCV精度が50%より高い場合は、提出時に問題が発生する可能性があります。

+0

私は現在、トレーニングデータと検証データのために80/20分割を行っていますが、代わりにKfoldを使ってみることは間違いありません。ありがとう!私はそれを試した後にあなたに知らせるでしょう。 – user3436204

+0

80/20分割の正確さはどのくらいですか?私の指摘は、検証の精度が0%と低くない場合、提出形式に問題がある可能性があるということです。 80/20の分割も0%の検証精度を得るならば、ニューラルネットワークの設定に何か問題があります。 – nom

+0

私の80/20スプリットは、平均75%の精度をもたらします。私は私の提出物をもう一度チェックすべきでしょうか?しかし、私はそれを見て、私はそれが正しい形式であることを99%確信しています。私は本当に私が行方不明であるか分からない。 – user3436204

関連する問題