python - Python - LinAlgError:SVD 未在线性最小二乘中收敛 - 数据中没有 Nans 或 infs
问题描述
a = np.array([0.5 , 0.505, 0.51 , 0.515, 0.52 , 0.525, 0.53 , 0.535, 0.54 ,
0.545, 0.55 , 0.555, 0.56 , 0.565, 0.57 , 0.575, 0.58 , 0.585,
0.59 , 0.595])
b = np.array([ 49.62358846, 50.21487603, 53.03564434, 51.68435625,
53.25301205, 54.04002965, 54.97835498, 52.83363803,
59.1954023 , 59.82532751, 60.33057851, 56.16438356,
53.33333333, 72.22222222, 51.72413793, 41.66666667,
33.33333333, 44.44444444, 25. , 100. ])
np.polyfit(a, b, 1)
有时这有效,有时有效并引发以下错误。任何人都可以重复这一点,或者有人知道发生了什么吗?它永远不应该对像这样好的数据抛出错误。
*LinAlgError Traceback (most recent call last)
<ipython-input-274-d8db33e4c692> in <module>
----> 1 np.polyfit(a, b, 1)
<__array_function__ internals> in polyfit(*args, **kwargs)
C:\ProgramData\other\lib\site-packages\numpy\lib\polynomial.py in polyfit(x, y, deg, rcond, full, w, cov)
627 scale = NX.sqrt((lhs*lhs).sum(axis=0))
628 lhs /= scale
--> 629 c, resids, rank, s = lstsq(lhs, rhs, rcond)
630 c = (c.T/scale).T # broadcast scale coefficients
631
<__array_function__ internals> in lstsq(*args, **kwargs)
C:\ProgramData\other\lib\site-packages\numpy\linalg\linalg.py in lstsq(a, b, rcond)
2304 # lapack can't handle n_rhs = 0 - so allocate the array one larger in that axis
2305 b = zeros(b.shape[:-2] + (m, n_rhs + 1), dtype=b.dtype)
-> 2306 x, resids, rank, s = gufunc(a, b, rcond, signature=signature, extobj=extobj)
2307 if m == 0:
2308 x[...] = 0
C:\ProgramData\other\lib\site-packages\numpy\linalg\linalg.py in _raise_linalgerror_lstsq(err, flag)
98
99 def _raise_linalgerror_lstsq(err, flag):
--> 100 raise LinAlgError("SVD did not converge in Linear Least Squares")
101
102 def get_linalg_error_extobj(callback):
LinAlgError: SVD did not converge in Linear Least Squares*
解决方案
我在这里发现了完全相同的问题: numpy.linalg.LinAlgError: SVD 仅在首次运行时没有在线性最小二乘中收敛
从那以后,又在学习数据科学课程时遇到了同样的问题。如果您再次运行完全相同的代码,它将起作用......有正当理由说明为什么没有收敛,例如 NaN 等 - 但正如疯狂科学家所指出的,SVD 中似乎存在真正的问题。
推荐阅读
- spring - 来自swagger yaml的春季服务器存根
- sql - SQLite 是否具有其他 SQL 风格所没有的任何特性(除了基于文件的特性)?
- mysql - MySql 时间表查询
- bash - db2“描述”控制台表输出不可读
- java - 运行 java 可运行 JAR
- javascript - 以交互方式运行 cypress 命令
- ios - 新的 UWB iPhone 可以测量它们与其他 UWB iPhone 的距离吗?
- tree - 如何在 wxpython 中为不同的 wx.TreeCtrl 项目调用不同的函数?
- postgresql - 连接到 DigitalOcean 液滴上的 Hasura Postgres 数据库
- haskell - Haskell IO:打印命令行参数