python - 为每个类拆分具有相等行数的训练数据
问题描述
我有一个非常大的数据集,大约 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 行。我该怎么做?
解决方案
您可能正在寻找处理不平衡数据的解决方案。以下是您可以遵循的一些方法。
- 重采样:(少数类数据点的过采样或多数类数据点的欠采样)
在您的情况下,第 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
来形成一个具有平衡数据集的新数据集
推荐阅读
- windows - 批处理错误:“此时不应出现<”
- python - 两个列表之间的值差异
- file-upload - 如何使用终端将文件直接上传和下载到虚拟服务器
- python - 在列表的for循环内修改列表时出现奇怪的输出
- java - 给定大小为 N 的数组中 n 个数字的最小总和,其间有 k 个空格
- c - 在 C 中实现偏执数组
- python-3.x - 如何使用 __add__ 方法在 python 中添加 2 个向量?
- python - 散景图不会在 dropdown.on_change 上更新
- c++ - 为什么子类的子类不能访问其祖先的受保护成员?
- database - 在postgresql中,导入csv文件后,序列号不同步