我目前正在努力减少我的数据(Pandas DataFrame)的内存使用量。这很顺利:将浮点数向下转换为更小的浮点数,将整数转换为更小的浮点数并将字符串对象转换为类别,然后在读取数据时直接使用这些新定义的类型。我什至有兴趣更进一步(通常将一些浮点数舍入以将它们向下转换为 int)。
但是我怀疑它可能对我的 sklearn 管道的其余部分没有太大影响(我的数据类型 int、浮点数和类别的预处理,以及小型 ANN 的校准)。进一步来说 :
我在文档中找不到任何内容,但在 GitHub 上似乎有大量讨论关于哪个转换器可以处理 float32。这可能会限制向下转换我的浮点数的有用性,但对于某些转换(最小/最大缩放器、对数转换)可能会将我的整数“向上转换”为浮点数。
类别似乎像预处理步骤中的对象一样处理。这些特征主要通过分类编码。所以只要标签处理得当,我认为应该不会有太大影响。
我不清楚如何通过主模型拟合序列处理这些预处理数据。从文献来看,float 精度似乎会对整体产生重大影响(降低 float 精度,在不去除太多信息的情况下,可以提高校准速度和模型的整体统计性能)。但目前尚不清楚如何确保在整个 Sklearn 过程中使用足够但不是太多的浮点精度。
那么,一般来说,确保 Sklearn 在内存使用和操作精度方面高效的步骤是什么?