Python 用于在 Keras 中执行分层 KFold 交叉验证的库
Python library to perform stratified KFold cross-validation in Keras
虽然我相信我的问题与任何类型的机器学习有关,但我有一组数据,我想在这些数据上训练神经网络。
我的数据分为两个 class,但是 class 一个的例子比 class 两个的例子多得多。在我继续对我的数据训练神经网络之前,我打算将数据分成 3 个独立的组(训练、验证和测试),并在每个组中,将 class 的数据复制足够多次这样我就可以从该组中的每个 class 获得相同数量的数据。
这真的很乏味,我敢打赌其他人也遇到过同样的问题。是否有 python 图书馆可以为我做这件事?或者至少是一部分?
tl;dr: 我想要一个 python 库,它可以将我的数据分成 3 个部分,并使每个 class 中的数据量相等不丢弃数据
是的,使用 scikit-learn。从 https://github.com/fchollet/keras/issues/1711:
复制粘贴 KeironO 的回答
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))
虽然我相信我的问题与任何类型的机器学习有关,但我有一组数据,我想在这些数据上训练神经网络。
我的数据分为两个 class,但是 class 一个的例子比 class 两个的例子多得多。在我继续对我的数据训练神经网络之前,我打算将数据分成 3 个独立的组(训练、验证和测试),并在每个组中,将 class 的数据复制足够多次这样我就可以从该组中的每个 class 获得相同数量的数据。
这真的很乏味,我敢打赌其他人也遇到过同样的问题。是否有 python 图书馆可以为我做这件事?或者至少是一部分?
tl;dr: 我想要一个 python 库,它可以将我的数据分成 3 个部分,并使每个 class 中的数据量相等不丢弃数据
是的,使用 scikit-learn。从 https://github.com/fchollet/keras/issues/1711:
复制粘贴 KeironO 的回答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))