2017-07-20 3 views
1

私は分類予測にTensorflowフレームワークを使用しています。私のデータセットは約1160の出力クラスを含んでいます。出力クラス値は6桁の数値です。たとえば、789954。Tensorflowでデータセットをトレーニングしてテストしたところ、約99%の精度が得られました。テンソルフロー予測をcsvにエクスポートしますが、結果にすべてゼロが含まれています - これはワンホットエンディングのためですか?

ここでは、予測結果(ロジット)がセット内の元のラベルと一致するかどうかを確認できるように、csvファイルの予測結果を取得します。私たちは、ロジットが私のために1つのホットエンコードされたベクトルであることを知っていますですから、私は、コード化されたホットコードをデコードするために、以下の手順を実行しました。

prediction=tf.argmax(logits,1) 
print(prediction.eval(feed_dict={features : test_features, keep_prob: 1.0})) 
prediction = np.asarray(prediction.eval(feed_dict={features : test_features, keep_prob: 1.0})) 

prediction = np.reshape(prediction, (test_features.shape[0],1)) 
np.savetxt("prediction.csv", prediction, delimiter=",") 

csvファイルの結果の値は、すべてのエントリで0.00E + 00にすぎません。しかし、私の期待は、それぞれのCSVエントリの6桁のコードです。私は私のワンホットエンコーディングで間違っていたと思います。

助けが必要です。

投稿日: 私はこのようにホットエンコードされています。 = 1160

labels = tf.one_hot(labels, n_classes) 

そしてn_classesと各記述のみone-label、あなたのアプローチは結構ですしている場合、すべての値は、6桁の数字

+0

csvファイルの0.00E + 00。 –

+0

'np.savetxt(" prediction.csv "、prediction、fmt = '%d'、delimiter ="、 ")'でチェックしてください。 –

+0

こんにちは私は問題文を説明したいと思います。説明のため 、「エアテル法案」 - それぞれのコードは、「フィットビット」457857 です - 788978 「ホームグーグル」 - 959546 をので、各説明については、それぞれのコードがあります。そこでsklearnのcountvectorizerを使用して各説明のベクトルを取得し、NNモデルを実行して新しいデータの分類を見つけました。 このデータを実行するには、このモデルは適切ではありませんか? あなたが言ったように、すべての予測ポイントがファーストクラスの場合、なぜ100%の精度が得られますか? –

答えて

1

になります。カテゴリをラベルに変換するには、sklearn LabelEncoderを使用します。ラベルには、各機能の値が[0 to 1160]からon-hot encodingの間にある必要があります。

関連する問題