numpy 出现“RuntimeWarning:在使用sklearn时matmul ret = a @ B”中遇到无效值?

63lcw9qa  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(197)

bounty还有4天到期。回答此问题可获得+200声望奖励。arjan-hada希望引起更多关注这个问题。

我在X_train.shape = (9440, 1900)所在的数据集上使用Ridge().fit(X_train, y_train)时遇到RuntimeWarning

/Users/username/micromamba/envs/data-science/lib/python3.11/site-packages/sklearn/utils/extmath.py:189: RuntimeWarning: invalid value encountered in matmul
  ret = a @ b

当我减小数据集X_train.shape = (1000, 1900)的大小时,RuntimeWarning消失了。
什么可能导致此警告以及如何避免它?我确保没有np.nan、np.inf和-np. inf。

yzxexxkh

yzxexxkh1#

这个错误在某种程度上是已知的,并且可悲的是架构/环境相关。这是numpy中的一个纯粹的矩阵运算问题。我在我的Colab中复制了它,代码如下:

# warning under numpy==1.25, OK under numpy==1.22.4
M = np.random.random((30000, 270)) # on Colab
M.T @ M

而@Stef测试了这个疯狂的版本。
请参阅numpy下的this recent GitHub discussion,我在其中贡献了这个突破性的示例。
我创建了this Colab notebook来帮助解决导致问题的根本原因(在numpy==1.22.4下工作正常,这是Colab的选择)。在Colab下尝试您的培训(您可以上传您的数据)。
总的来说,我的建议是降级numpy版本或等待维护人员的修复。

相关问题