2017-10-12 105 views
-1

我試圖訓練神經網絡的二元分類,但使用多類方法,因此類(C)= 2。列車和測試數據集的準確性爲〜96%。但是,手動檢查顯示Tensorflow總是爲每個示例選擇0。Tensorflow總是預測0

我很想知道如何去調試這個問題以及我做錯了什麼。非常感謝您的幫助。謝謝。

(請讓我知道如果我過於模糊,爲了不提供足夠的信息讓你找出一個好的解決辦法。謝謝。)

+2

請[請看MCVE](https://stackoverflow.com/help/mcve)並相應地編輯您的問題。 –

+1

我們可能需要一個MCVE的代碼(請參閱上面的註釋)來正確地幫助您。只需檢查一下簡單的答案:您的班級0是否代表您的數據的96%?在那種情況下,沒有問題,它只是學會了預測0,這確實產生了96%的好答案。否則,我們需要一些代碼和一些關於數據的知識。 – gdelab

回答

0

如果你有96%的準確率,所有的預測是0,則您的數據集可能不平衡。您應該平衡它,並使正面和負面類別的樣本數量相同。您也可以爲班級添加權重,使用更少的樣本懲罰更多的班級。

+0

這個答案和@gdelab的答案都是正確的。我看了一下數據集,事實上這是你們兩個建議的。有關如何解決此問題的任何建議? (不幸的是,我沒有足夠的聲望投票給您的答案) –

+0

對於神經網絡,沒有簡單的解決方法,您可以爲模型添加權重或修復數據集。我的解決方案是對數據集進行重採樣,您可以對主要類進行欠採樣,以便每個類有50/50,或者可以對少數類進行過採樣。這是一個Python庫中的幾個解決方案:https://github.com/scikit-learn-contrib/imbalanced-learn –