我有一个非常大的数据集,大约有 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 行。我该怎么做?
您可能正在寻找处理不平衡数据的解决方案。您可以遵循以下一些方法。
- Resampling: (Over sampling of minority class data points or Under sampling of majority class data points)
在你的情况下,第 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
形成一个具有平衡数据集的新数据集
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)