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



我有一组数据,我想用它来训练神经网络,尽管我相信我的问题与任何类型的机器学习有关。

我的数据分为两类,但是我的第一类的例子比第二类的例子要多得多。在我继续对我的数据训练神经网络之前,我打算将数据分成 3 个独立的组(训练、验证和测试(,并在每个组中,将我为第一类提供的数据重复足够多次,以便我从该组中的每个类中获得相同数量的数据。

这真的很乏味,我敢打赌其他人也有同样的问题。有没有一个 python 库可以为我做到这一点?或者至少是其中的一部分?

tl;dr:我想要一个python库,它将我的数据分成3个部分,并在不丢弃数据的情况下平衡我在每个类中的数据量

是的,使用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))

最新更新