我有一组数据,想用它来训练神经网络,尽管我认为我的问题适用于任何类型的机器学习。
我的数据分为两类,但第一类的数据样本远多于第二类。在我开始用这些数据训练神经网络之前,我打算将数据分成三个独立的组(训练、验证和测试),并在每个组中,重复第一类的数据足够多次,使得每个组中两类数据的数量相等。
这样做真的很繁琐,我敢打赌其他人也遇到过同样的问题。有没有一个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])