0

我正在尝试使用 lightGBM 作为分类器。我的数据保存在多个 csv 文件中,但我发现没有办法直接使用多个文件作为输入。

我曾考虑将所有数据组合成一个大数据(numpy 数组),但我的计算机没有足够的内存。可用内存不足时如何使用lightGBM处理多个数据文件?

4

3 回答 3

0

您可能想要对您的功能进行分类,然后对它们进行一次热编码。LightGBM 最适用于稀疏特征,例如 one-hot-encoded 特征,因为它的 EFB(Effective Feature Bundling)显着提高了 LightGBM 的计算效率。此外,您肯定会摆脱数字的浮动部分。

认为分类是这样的;假设其中一个数字特征的值在 36 到 56 之间变化,您可以将其数字化为 [36,36.5,37,....,55.5,56] 或 [40,45,50,55] 以使其分类的。取决于您的专业知识和想象力。你可以参考 scikit-learn 的 one-hot-encoding,它有内置的功能。

PS:对于数值特征,总是检查它的统计属性,你可以使用 pandas.describe() 来总结它的平均值、最大值、最小值、标准等。

于 2018-10-11T22:57:46.323 回答
0

样本。

如果您正确采样,您永远不应该(除了某些边缘情况)需要使用整个数据集。

我使用一个拥有超过 230M 记录的数据库,但我通常只选择一个 1k-100k 的随机样本来创建模型。

此外,您不妨将数据拆分为训练、测试和验证。这将有助于减少每个文件的大小。

于 2018-05-09T15:28:02.163 回答
0

我猜你正在使用 Python。

您的数据大小是多少?(行数 x 列数)

Lightgbm 需要将数据加载到内存中进行训练。但是,如果您还没有这样做,您可以明智地为数据的每一列选择合适的数据类型。

如果您使用 'uint8' / 'uint16' 之类的 dtype 并帮助您将所有内容加载到内存中,它可以大大减少内存占用。

于 2018-04-27T07:55:22.443 回答