为什么我在 Keras 中使用前馈神经网络对单独的训练、验证和测试数据集获得 100% 的准确率?
Why am I getting 100% accuracy using feed-forward neural networks for separate training, validation, and testing datasets in Keras?
今天我正在研究一个分类器,根据蘑菇的特征来检测蘑菇是否有毒。数据在 .csv 文件中(读取到 pandas DataFrame),最后可以找到数据的 link。
我使用 sci-kit learn 的 train_test_split 函数将数据拆分为训练集和测试集。
然后我删除了用于训练和测试标签的指定蘑菇是否有毒的列,并将其分配给 yTrain 和 yTest 变量。
然后我对数据应用了单热编码(使用 pd.get_dummies()),因为参数是分类的。
在此之后,我规范化了训练和测试输入数据。
本质上,训练和测试输入数据是单热编码参数的不同列表,输出数据是代表输出的 1 和 0 列表(1 表示有毒,0 表示可食用)。
我在这个项目中使用了 Keras 和一个简单的前馈网络。该网络由三层组成;一个简单的 Dense(PyTorch 用户的线性层)层,有 300 个神经元,一个 Dense 层有 100 个神经元,一个 Dense 层有两个神经元,每个代表蘑菇的给定参数是否表示它有毒的概率,或者食用。 Adam 是我使用的优化器,Sparse-Categorical-Crossentropy 是我的损失函数。
我训练了我的网络 60 个时期。大约 5 个 epoch 后,损失基本为零,我的准确率为 1。训练后,我担心我的网络过拟合,所以我在我的不同测试数据上进行了尝试。结果与训练和验证数据相同;准确率为 100%,我的损失可以忽略不计。
我在 50 个 epoch 结束时的验证损失是 2.258996e-07,我的训练损失是 1.998715e-07。我的测试损失是 4.732502e-09。我真的很困惑,损失应该这么低吗?我不认为我过拟合,我的验证损失只比我的训练损失高一点,所以我也不认为我欠拟合。
你们中有人知道这个问题的答案吗?如果我以某种愚蠢的方式搞砸了,我很抱歉。
Link 到数据集:https://www.kaggle.com/uciml/mushroom-classification
Kaggle 数据集似乎是可解的,因为您可以创建一个 100% 的时间给出正确答案的模型 (if these results are to be believed)。如果您查看这些结果,您会发现作者实际上能够使用多种方法(包括决策树)找到准确率为 100% 的模型。
今天我正在研究一个分类器,根据蘑菇的特征来检测蘑菇是否有毒。数据在 .csv 文件中(读取到 pandas DataFrame),最后可以找到数据的 link。
我使用 sci-kit learn 的 train_test_split 函数将数据拆分为训练集和测试集。
然后我删除了用于训练和测试标签的指定蘑菇是否有毒的列,并将其分配给 yTrain 和 yTest 变量。
然后我对数据应用了单热编码(使用 pd.get_dummies()),因为参数是分类的。
在此之后,我规范化了训练和测试输入数据。
本质上,训练和测试输入数据是单热编码参数的不同列表,输出数据是代表输出的 1 和 0 列表(1 表示有毒,0 表示可食用)。
我在这个项目中使用了 Keras 和一个简单的前馈网络。该网络由三层组成;一个简单的 Dense(PyTorch 用户的线性层)层,有 300 个神经元,一个 Dense 层有 100 个神经元,一个 Dense 层有两个神经元,每个代表蘑菇的给定参数是否表示它有毒的概率,或者食用。 Adam 是我使用的优化器,Sparse-Categorical-Crossentropy 是我的损失函数。
我训练了我的网络 60 个时期。大约 5 个 epoch 后,损失基本为零,我的准确率为 1。训练后,我担心我的网络过拟合,所以我在我的不同测试数据上进行了尝试。结果与训练和验证数据相同;准确率为 100%,我的损失可以忽略不计。
我在 50 个 epoch 结束时的验证损失是 2.258996e-07,我的训练损失是 1.998715e-07。我的测试损失是 4.732502e-09。我真的很困惑,损失应该这么低吗?我不认为我过拟合,我的验证损失只比我的训练损失高一点,所以我也不认为我欠拟合。
你们中有人知道这个问题的答案吗?如果我以某种愚蠢的方式搞砸了,我很抱歉。
Link 到数据集:https://www.kaggle.com/uciml/mushroom-classification
Kaggle 数据集似乎是可解的,因为您可以创建一个 100% 的时间给出正确答案的模型 (if these results are to be believed)。如果您查看这些结果,您会发现作者实际上能够使用多种方法(包括决策树)找到准确率为 100% 的模型。