我正在使用 sklearn 进行多分类任务。我需要将所有数据分成train_set和test_set。我想从每个类(class)中随机抽取相同的样本数。 其实我很喜欢这个功能
X_train, X_test, y_train, y_test = cross_validation.train_test_split(Data, Target, test_size=0.3, random_state=0)
但它给出了不平衡的数据集!任何建议。
最佳答案
尽管 Christian 的建议是正确的,但从技术上讲,train_test_split
应该通过使用 stratify
参数为您提供分层结果。
所以你可以这样做:
X_train, X_test, y_train, y_test = cross_validation.train_test_split(Data, Target, test_size=0.3, random_state=0, stratify=Target)
这里的技巧是它从sklearn
中的版本0.17
开始。
来自有关参数stratify
的文档:
stratify : array-like or None (default is None) If not None, data is split in a stratified fashion, using this as the labels array. New in version 0.17: stratify splitting
关于machine-learning - 如何在sklearn上平衡训练集和测试集上分割数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35472712/