首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多输入神经网络中,是否可以使用自学习的StratifiedKFold?

在多输入神经网络中,是否可以使用自学习的StratifiedKFold?
EN

Stack Overflow用户
提问于 2018-10-24 21:54:00
回答 1查看 1.2K关注 0票数 2

我有一个数据集,可以以python字典或列表的形式传递给多输入神经网络。

示例

代码语言:javascript
复制
#dict
{'input1': X1, 'input2': X2, 'input3': X3}, {'output': Y}
#list
[ X1, X2, X3], y

现在,我想使用K折叠交叉验证来估计我的模型的性能。您认为我可以像在这个单输入示例中那样使用来自sklearnsklearn吗?

代码语言:javascript
复制
for train, test in kfold.split(X, Y):
  # create model
    model = Sequential()
    model.add(Dense(12, input_dim=8, activation='relu'))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    # Fit the model
    model.fit(X[train], Y[train], epochs=150, batch_size=10, verbose=0)
    # evaluate the model
    scores = model.evaluate(X[test], Y[test], verbose=0)
    print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
    cvscores.append(scores[1] * 100)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 17:21:34

skf.split()返回索引,它只依赖于Y:

代码语言:javascript
复制
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)。然后你拿着你的

代码语言:javascript
复制
train_index

代码语言:javascript
复制
test_index

过滤你所有的输入。

同样,skf()只依赖于您的Y。因此,我们的目标是通过适当的Y和得到指数。

其他方法:将所有您输入的输出合并到一个数据帧中,并为每个层保留列名。在本例中,您有一个“大”X。首先将其拆分为train_index和test_index,然后使用前面保存的列名将其拆分为X1、X2和X3。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52978434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档