Keras “每个”后的模型拟合;“折叠”;在洛夫?手动多标签LOOCV

Keras “每个”后的模型拟合;“折叠”;在洛夫?手动多标签LOOCV,keras,scikit-learn,cross-validation,Keras,Scikit Learn,Cross Validation,我想知道,在实现手工遗漏交叉验证时,是否存在问题(可能的数据泄漏?),在每次测试后,模型是否适合每次迭代?看起来,如果模型在除“X”之外的所有数据上进行训练,并且在“X”上进行测试之后,模型在除“Y”之外的所有数据上进行训练,并在“Y”上进行测试,那么它在第一次迭代中看到了“Y”。这实际上是一个问题吗?我手工实现的LOOCV是否正确 谢谢你的时间 i=0 j=0 对于范围(0,41)内的i: X_copy=X_orig[(i):(i+1)]#从numpy数组中切片第i个元素 y_copy=y_

我想知道,在实现手工遗漏交叉验证时,是否存在问题(可能的数据泄漏?),在每次测试后,模型是否适合每次迭代?看起来,如果模型在除“X”之外的所有数据上进行训练,并且在“X”上进行测试之后,模型在除“Y”之外的所有数据上进行训练,并在“Y”上进行测试,那么它在第一次迭代中看到了“Y”。这实际上是一个问题吗?我手工实现的LOOCV是否正确

谢谢你的时间

i=0
j=0
对于范围(0,41)内的i:
X_copy=X_orig[(i):(i+1)]#从numpy数组中切片第i个元素
y_copy=y_orig[(i):(i+1)]
X_模型=X_原点
y_模型=y_原点
X_模型=np.删除(X_模型,i,轴=0)
y_模型=np.delete(y_模型,i,轴=0)
model.fit(X_模型,y_模型,epochs=115,batch_size=28,verbose=0)#verbose=0删除学习信息
预测=模型预测(X_副本)
预测[预测>=0.5]=1

预测[预测你为什么不用这个

from sklearn.model_selection import LeaveOneOut

loo = LeaveOneOut()
model =...

test_fold_predictions = []
for train_index, test_index in loo.split(X):
   X_train, X_test = X[train_index], X[test_index]
   y_train, y_test = y[train_index], y[test_index]
   model.fit(X_train, y_train)
   test_fold_predictions.append(model.predict(X_test))
编辑


谢谢你的建议。我确实试过了,但它要么不适用于多标签问题,要么我不知道如何使它起作用。我应该提到这是一个多标签问题。你能发布你的
y
?这种格式有41个样本。[[0.1.0.0.1.][0.1.0.0.1.][1.1.0.0.0.][0.1.1.0.0.][0.1.1.][0.0.1.0.0.]]一般来说这应该不是问题。你使用什么模型?它是一个前馈NN:model=Sequential()模型(y_orig.shape[1],activation='sigmoid'))sgd=sgd(lr=0.0001,decation=1e-6,momentum=0.9,nesterov=True)模型。编译(loss='binary'u crossentropy',optimizer='sgd',metrics=['accurity')
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD

model = Sequential()
model.add(Dense(5000, activation='relu', input_dim=X_train.shape[1]))
model.add(Dropout(0.1))
model.add(Dense(600, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(y_train.shape[1], activation='sigmoid'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy',
              optimizer=sgd)

from sklearn.model_selection import LeaveOneOut

loo = LeaveOneOut()
test_fold_predictions = []
for train_index, test_index in loo.split(X):
   X_train, X_test = X[train_index], X[test_index]
   y_train, y_test = y[train_index], y[test_index]
   model.fit(X_train, y_train, epochs=5, batch_size=2000)
   test_fold_predictions.append(model.predict(X_test))