如何进行训练测试拆分,以便在Python中每个类都有足够的训练和测试数据?

时间:2019-05-25 11:57:26

标签: python pandas scikit-learn

我有一个5类的数据集,其分布如下:

enter image description here

从分布中可以明显看出,类别1的样本非常少。

如何对这些数据进行训练测试拆分,以使Python中每个类别的训练和测试数据都足够?

2 个答案:

答案 0 :(得分:2)

stratify中将train_test_split参数设置为目标列。

stratify将确保每个类均分。 Doc

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=y)

答案 1 :(得分:-1)

train_test_split函数在默认情况下会在拆分之前对数据集进行随机排序,除非您将shuffle参数值设置为False。而且我认为,如果shuffle为True,则可以确保训练的数据集部分具有来自所有类别的值。另外,如果您希望train_test_split的结果具有确定性,则可以使用random_state参数。请参阅documentation了解更多信息。希望对您有所帮助。