我正在尝试使用lightGBM作为分类器。我的数据保存在多个csv文件中,但我发现没有办法直接使用多个文件作为输入。
我考虑将所有数据合并为一个大数据(numpy数组),但我的计算机没有足够的内存。当可用内存不足时,如何使用lightGBM处理多个数据文件?
答案 0 :(得分:0)
我猜你正在使用Python。
您的数据大小是多少? (行数x列数)
Lightgbm需要在内存中加载数据以进行培训。 但是,如果您还没有完成,您可以明智地为数据的每一列选择合适的数据类型。
如果你使用诸如“uint8'”之类的dtypes,它可以大大减少内存占用。 /' uint16'并帮助您将所有内容加载到内存中。
答案 1 :(得分:0)
样品。
如果您正确采样,则不应该(除了某些边缘情况)需要使用整个数据集。
我使用的记录超过230M的数据库,但我通常只选择1k-100k的RANDOM样本来创建模型。
此外,您还可以将数据拆分为培训,测试和验证。这将有助于减少每个文件的大小。
答案 2 :(得分:0)
您可能想对功能进行分类,然后对它们进行一键编码。 LightGBM的EFB(有效特征捆绑)可有效地提高LightGBM的计算效率,因此它可以很好地与稀疏特征(例如单热编码特征)配合使用。而且,您一定会摆脱数字的浮动部分。
这样考虑分类;假设其中一个数字特征的值在36到56之间变化,您可以将其数字化为[36,36.5,37,....,55.5,56]或[40,45,50,55]绝对的。取决于您的专业知识和想象力。您可以参考scikit-learn进行一键编码,它具有内置功能。
PS:具有数字功能,请始终检查它的统计属性,您可以使用pandas.describe()总结其平均值,最大值,最小值,标准差等。