Python 当使用不同的数据集排列进行训练时,神经网络会给出不同的结果,为什么?
我有一个神经网络,使用keras和tensorflow后端:Python 当使用不同的数据集排列进行训练时,神经网络会给出不同的结果,为什么?,python,validation,tensorflow,neural-network,keras,Python,Validation,Tensorflow,Neural Network,Keras,我有一个神经网络,使用keras和tensorflow后端: seed = 7 np.random.seed(seed) model = Sequential() model.add(Dense(32, input_dim=11, init='uniform', activation='relu')) model.add(Dense(12, init='uniform', activation='relu')) model.add(Dense(1, init='uniform', acti
seed = 7
np.random.seed(seed)
model = Sequential()
model.add(Dense(32, input_dim=11, init='uniform', activation='relu'))
model.add(Dense(12, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, result_train, nb_epoch=50, batch_size=5)
scores = model.evaluate(X_test, result_test)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
我正在测试一所公立大学的辍学学生,将他们的社会经济参数作为变量,最初我有8个csv文件(命名为a、b、c、d、e、f、g和h),有12列标题和300000行。结果是二进制的,0表示保留,1表示删除,在将数据馈送到NN之前,我对数据进行了规范化
我的第一个训练集是a、b、c、d、e和f,g和h作为测试的支撑。神经网络为我提供了良好的特异性、敏感性和准确性:70%、65%和66%
利用这一点,我训练了另一个与上述结构相同的神经网络,这次我的训练数据集是c、d、e、f、g和h,其中a和b是我新的测试支撑,但该模型在特异性、敏感性和准确性方面提供了非常糟糕的结果:42%、48%和47%,我想知道为什么?有没有发表过引用神经网络中这种现象的论文
谢谢 许多机器学习方法都会遇到称为“过度拟合”的问题。 提供了各种各样的参考 您至少使用保持数据集的原因是为了测试经过训练的模型与看不见的数据的匹配程度。从理论上讲,您可以在一个数据集上100%准确,但在新数据上却表现得非常糟糕 有些人使用交叉验证,而不仅仅是一个或两个延迟数据集——这将尝试测试和训练集中的每个数据点。例如,对于10个数据点,使用9进行训练,并尝试拟合第十个数据点。然后对每个排列执行此操作 如果不同的模式在数据集中分布不均匀,这可能是合适的 如果您的一个训练集有所有的辍学者,那么预测每个人都辍学的模型将最适合这一点,但不会推广到没有辍学者的任何数据
通常值得做一些利用性数据分析,看看您的一些数据集是否不具有代表性。我假设结果是针对“保留”测试集的?@doctorlove,是的,它们是针对保留的。我试图找出原因,我计算了每个csv文件中的辍学人数,他们的范围不宽。csv文件的辍学率为a=34%、b=42%、c=35%、d=36%、e=34%、f=40%、g=37%和h=33%。看我的结构,如果阈值和权重的实现在线,则每个训练行都将影响下一行iteration@DanielSanchez你是说在AWS上?我将数据保存在AWS中,并通过putty运行它。csv文件中未进行任何更改。