擅长:python、mysql、java
<p><code>Integer.MAX_INT</code>限制是存储文件的大小。1.2米的行数不是什么大事,我不确定你的问题是“火花的极限”。更可能的是,你的工作的某些部分是创造一些太大的东西,任何给定的执行者都无法处理。</p>
<p>我不是Python程序员,但是当您“散列记录的特性”时,您可能会为一个示例获取一组非常稀疏的记录,并创建一个非稀疏数组。这意味着16384个功能需要大量内存。尤其是当你这样做的时候。唯一没有让你内存不足的原因是你似乎已经配置了大量的内存(50G)。</p>
<p>另一个可能有用的方法是增加分区。因此,如果不能使行使用更少的内存,至少可以尝试在任何给定任务上使用更少的行。创建的任何临时文件都可能依赖于此,因此您不太可能达到文件限制。</p>
<hr/>
<p>而且,与错误完全无关,但与你试图做的事情相关:</p>
<p>16384确实是一个很大的特性,在乐观的情况下,每个特性都只是一个布尔特性,您总共有2^16384个可能的排列可以学习,这是一个很大的数字(请在这里尝试:<a href="https://defuse.ca/big-number-calculator.htm" rel="nofollow noreferrer">https://defuse.ca/big-number-calculator.htm</a>)。</p>
<p>很有可能没有一种算法能够在只有120万个样本的情况下学习决策边界,您可能需要至少几万亿个样本才能在这样的特征空间上做出让步。机器学习有它的局限性,所以如果你不能得到比随机精度更好的结果,不要惊讶。</p>
<p>我绝对建议你先尝试一下降维!!</p>