是否可以在多输入神经网络中使用sklearn的StratifiedKFold?

时间:2018-10-24 21:54:00

标签: python scikit-learn neural-network keras cross-validation

我有一个数据集,可以以python dictionary list 的形式传递给多输入神经网络:

示例

 ~count.ex~1+offset(log(time.ex))+(1|study.ex)

现在,我想使用 K折交叉验证来估算模型的性能。您是否可以像此单输入示例一样使用#dict {'input1': X1, 'input2': X2, 'input3': X3}, {'output': Y} #list [ X1, X2, X3], y 中的StratifiedKFold

sklearn

否则,最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

skf.split()返回索引,并且仅取决于Y:

for train_index, test_index in skf.split(X, y):
...    print("TRAIN:", train_index, "TEST:", test_index)
...    X_train, X_test = X[train_index], X[test_index]
...    y_train, y_test = y[train_index], y[test_index]

因此,您可以在此处传递任何X数组(甚至将第1层的X1转换为数据框或合成X)。然后,拿走

train_index

test_index

并过滤所有输入。

同样,skf()仅取决于您的Y。因此,目标是传递适当的Y并获取索引。

另一种方式:将所有输入输入合并到一个数据帧中,并保留每一层的列名。在这种情况下,您有一个“大”X。首先将其拆分为train_index和test_index,然后使用上面保存的列名称拆分为X1,X2和X3。