You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scikit-learn GaussianProcessRegressor运行fit报array is too big错误如何解决

报错原因

你对高斯过程的计算开销存在误解:它的训练瓶颈不是输入特征的维度,而是训练样本的数量。训练时需要构造尺寸为N*N的核矩阵(N为训练样本数),你当前样本量为19142,对应核矩阵的大小是19142×19142,若用float64存储,每个元素占8字节,总大小约为2.9GB。如果你使用的是32位版本的Python/Numpy,单个数组的最大允许大小不超过2GB,就会触发该报错。就算你用64位环境,对近2万阶的矩阵做后续分解运算的时间成本也极高,实际使用价值很低。

解决方法
  • 改用32位浮点数输入:将输入数组强制转换为float32类型,核矩阵的内存占用直接减半,32位环境下也可正常存储,仅会轻微损失计算精度。修改fit的传入参数即可:
model_gp.fit(
    X.values[:,list_of_relevant_features].astype(np.float32),
    y.values.astype(np.float32)
)
  • 减少训练样本量:原生精确高斯过程本身就不适用于万级以上样本的训练,你可以随机抽取1000~5000条样本用于训练,既可以满足大部分场景的拟合需求,也能将核矩阵的内存占用控制在200MB以内,不会触发内存限制。
  • 使用稀疏高斯过程实现:sklearn自带的是精确高斯过程,你可以替换为支持稀疏近似的高斯过程工具,通过诱导点法大幅降低计算和内存开销,不需要减少样本量也能完成训练。
  • 更换64位运行环境:如果你确实需要使用全量样本和float64精度,更换为64位版本的Python和对应依赖库即可解除2GB的单数组大小限制,但全量训练的耗时会非常长,不推荐。

内容的提问来源于stack exchange,提问作者Tom S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:54:00