如何对数据集进行子采样

Posted

技术标签:

【中文标题】如何对数据集进行子采样【英文标题】:How to Sub-Sample Dataset 【发布时间】:2015-01-31 11:23:43 【问题描述】:

我将实现 svm(支持向量机)和其他各种分类算法。 但是我的火车数据集是 10Gb。我怎样才能对它进行子采样? 这是一个非常基本的问题,但我是初学者。

感谢您的帮助

【问题讨论】:

【参考方案1】:

您应该做的第一件事是减少样本(行)的数量。 LibSVM 为此提供了一个非常有用的python script。如果您的数据集有 N 个样本并且您想将其下采样到 N - K 个样本,您可以使用上述脚本来: (1) 从数据中随机删除 K 个样本; (2) 使用stratified sampling 从您的数据中删除 K 个样本。推荐最后一个。

减少特征(列)的数量要复杂得多。你不能(你不应该)随机删除它们。为此有很多算法,通常称为数据缩减算法。最常用的是PCA。但使用起来并不简单。

【讨论】:

【参考方案2】:

这取决于您的数据。

由于您正在处理一个基本级别的问题,我想最好的方法是大大减少您的样本量。完成后,将特征数量减少到指定大小。

一旦数据集足够小且足够简单,您就可以考虑添加更多适合手头问题的属性或样本。

希望对您有所帮助!

【讨论】:

以上是关于如何对数据集进行子采样的主要内容,如果未能解决你的问题,请参考以下文章

如何对不平衡的多类数据集进行欠采样? (Python)

在 Python 中对稀疏数据集进行过采样

Python 包含子采样

不平衡数据集的采样率

猪:如何重新采样时间序列数据?

Pandas Dataframe 时间序列重新采样,如何修改 bin 以适应底层数据集的开始和结束时间