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

时间:2017-05-26 00:27:11

标签: python machine-learning neural-network keras cross-validation

我有一组数据,我想训练一个神经网络,虽然我相信我的问题与任何类型的机器学习有关。

我的数据分为两类,但是我有更多的第一类例子而不是第二类。在我继续为我的数据训练神经网络之前,我打算将数据分成3个独立的组(训练,验证和测试),并且在每个组中,将我的第一类数据复制到足够的时间,以便我有来自该组中每个班级的等量数据。

这真的很乏味,而且我愿意打赌其他人也有同样的问题。是否有一个python库为我这样做?或者至少是其中的一部分?

tl; dr:我想要一个python库,将我的数据分成3个部分并均衡每个类中的数据量而不丢弃数据

1 个答案:

答案 0 :(得分:2)

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

from sklearn.cross_validation import StratifiedKFold

def load_data():
    # load your data using this function

def create model():
    # create your model using this function

def train_and_evaluate__model(model, data[train], labels[train], data[test], labels[test)):
    model.fit...
    # fit and evaluate here.

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 "Running Fold", i+1, "/", n_folds
            model = None # Clearing the NN.
            model = create_model()
            train_and_evaluate_model(model, data[train], labels[train], data[test], labels[test))