在Keras中执行分层KFold交叉验证的Python库

我有一组数据,想用它来训练神经网络,尽管我认为我的问题适用于任何类型的机器学习。

我的数据分为两类,但第一类的数据样本远多于第二类。在我开始用这些数据训练神经网络之前,我打算将数据分成三个独立的组(训练、验证和测试),并在每个组中,重复第一类的数据足够多次,使得每个组中两类数据的数量相等。

这样做真的很繁琐,我敢打赌其他人也遇到过同样的问题。有没有一个Python库可以帮我完成这个任务?或者至少完成其中的一部分?

tl;dr: 我想要一个Python库,能够将我的数据分成三部分,并在不丢弃数据的情况下,使每个类别的数据量平衡


回答:

是的,使用scikit-learn。以下是@KeironO在https://github.com/fchollet/keras/issues/1711上的回答的复制粘贴:

from sklearn.cross_validation import StratifiedKFolddef load_data():    # 使用此函数加载数据def create_model():    # 使用此函数创建模型def train_and_evaluate_model(model, data[train], labels[train], data[test], labels[test]):    model.fit...    # 在此处拟合和评估数据if __name__ == "__main__":    n_folds = 10    data, labels, header_info = load_data()    skf = StratifiedKFold(labels, n_folds=n_folds, shuffle=True)    for i, (train, test) in enumerate(skf):            print "运行第", i+1, "折,共", n_folds, "折"            model = None # 清除神经网络。            model = create_model()            train_and_evaluate_model(model, data[train], labels[train], data[test], labels[test])

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注