簡體   English   中英

為什么在 Keras 中使用前饋神經網絡進行單獨的訓練、驗證和測試數據集可以獲得 100% 的准確率?

[英]Why am I getting 100% accuracy using feed-forward neural networks for separate training, validation, and testing datasets in Keras?

今天我正在研究一個分類器,以根據蘑菇的特征來檢測蘑菇是否有毒。 數據位於 a.csv 文件中(讀取到 pandas 數據幀),數據鏈接可在末尾找到。

我使用 sci-kit learn 的 train_test_split function 將數據拆分為訓練集和測試集。

然后,我刪除了為訓練和測試標簽指定蘑菇是否有毒的列,並將其分配給 yTrain 和 yTest 變量。

然后我對數據應用了單熱編碼(使用 pd.get_dummies()),因為參數是分類的。

在此之后,我對訓練和測試輸入數據進行了標准化。

本質上,訓練和測試輸入數據是一個獨特的單熱編碼參數列表,而 output 數據是代表輸出的 1 和 0 列表(1 表示有毒,0 表示可食用)。

我為這個項目使用了 Keras 和一個簡單的前饋網絡。 該網絡由三層組成; 一個簡單的 Dense(PyTorch 用戶的線性層)層有 300 個神經元,一個 Dense 層有 100 個神經元,一個 Dense 層有兩個神經元,每個表示蘑菇的給定參數是否表示它有毒的概率,或者食用。 Adam是我使用的優化器,而Sparse-Categorical-Crossentropy是我的損失函數。

我訓練了我的網絡 60 個 epoch。 大約 5 個 epoch 之后,損失基本為零,我的准確率是 1。訓練后,我擔心我的網絡過擬合,所以我在不同的測試數據上進行了嘗試。 結果與訓練和驗證數據相同; 准確率是 100%,我的損失可以忽略不計。

我在 50 個 epoch 結束時的驗證損失是 2.258996e-07,我的訓練損失是 1.998715e-07。 我的測試損失是 4.732502e-09。 我真的很困惑這個state,損失應該這么低嗎? 我不認為我過擬合,我的驗證損失只比我的訓練損失高一點,所以我也不認為我是欠擬合的。

你們中有人知道這個問題的答案嗎? 如果我以某種愚蠢的方式搞砸了,我很抱歉。

數據集鏈接: https://www.kaggle.com/uciml/mushroom-classification

從某種意義上說,Kaggle 數據集似乎是可解的,您可以創建一個 model 100% 的時間給出正確答案( 如果這些結果可信的話)。 如果您查看這些結果,您會發現作者實際上能夠找到使用多種方法(包括決策樹)提供 100% 准確度的模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM