我有一个非常庞大的数据集,约有314554097行和3列。第三列是课程。数据集有两个0和1类。我需要将数据分为测试数据和训练数据。要分割数据,我可以使用
from sklearn.cross_validation import train_test_split .
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.75, random_state = 0)
但是,数据集包含约99%的0类和仅1%的1类。在训练数据集中,我需要相等数量的0类和1类,例如两个类的30000行。我该怎么做?
答案 0 :(得分:3)
您可能正在寻找解决不平衡数据的解决方案。这是您可以遵循的一些方法。
在您的情况下,第1类是少数民族类
但是如果您仍然需要30k的1类和0类数据点,请尝试以下操作:
X_train_sample_class_1 = X_train[X_train['third_column_name'] == 1][:30000]
X_train_sample_class_0 = X_train[X_train['third_column_name'] == 0][:30000]
现在您可以结合使用X_train_sample_class_1
和X_train_sample_class_0
来形成一个具有平衡数据集的新数据集
答案 1 :(得分:0)
当我尝试以下操作时:
X_train_sample_class_1 = X_train[X_train['third_column_name'] == 1][:30000]
X_train_sample_class_0 = X_train[X_train['third_column_name'] == 0][:30000]
数据框是空的,没有值。请问如何用值分割?