Python numpy.linalg.LinAlgError:SVD仅在第一次运行时未以线性最小二乘收敛

Python numpy.linalg.LinAlgError:SVD仅在第一次运行时未以线性最小二乘收敛,python,pandas,numpy,Python,Pandas,Numpy,我一直在努力解决一个已知且有文档记录的SVD converge问题。在阅读了其他人提出的类似问题后,我仔细检查了我的数据,并将其缩减为一个很小的数据帧(仅10行/2列),这两个数据帧都是64。绝对没有NaN或无穷大 在第一次运行时,我通过断点在有问题的行处暂停。第一次手动执行下一行(有问题的)时,我得到一个控制台错误(见下文)-但在后续运行中,它会无错误地解决!!我正在使用numpy 1.19.1 我将非常感谢关于如何解决这一问题的想法或想法。这让我发疯,动摇了我的信心 提前感谢您的建议。我真的

我一直在努力解决一个已知且有文档记录的SVD converge问题。在阅读了其他人提出的类似问题后,我仔细检查了我的数据,并将其缩减为一个很小的数据帧(仅10行/2列),这两个数据帧都是64。绝对没有NaN或无穷大

在第一次运行时,我通过断点在有问题的行处暂停。第一次手动执行下一行(有问题的)时,我得到一个控制台错误(见下文)-但在后续运行中,它会无错误地解决!!我正在使用numpy 1.19.1

我将非常感谢关于如何解决这一问题的想法或想法。这让我发疯,动摇了我的信心

提前感谢您的建议。我真的很想弄清这件事的真相

卢瑟

守则:

# Simplifying the df
df = df.head(10)
df = df[['dti','close']]
print(df)
ltt2_poly = np.polyfit(df['dti'] - df['dti'][0], df['close'], 2)
在运行时:

pydev debugger: process 36368 is connecting
Connected to pydev debugger (build 202.6948.78)
Importing local settings
   dti  close
0    0  11.28
1    3  11.35
2    4  11.10
3    5  10.95
4    6  11.07
5    7  11.45
6   10  11.46
7   11  11.46
8   12  11.74
9   13  11.96

**ltt2_poly = np.polyfit(df['dti'] - df['dti'][0], df['close'], 2)**

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2020.1.1\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<input>", line 1, in <module>
  File "<__array_function__ internals>", line 5, in polyfit
  File "C:\Users\luthor\PycharmProjects\MC\venv\lib\site-packages\numpy\lib\polynomial.py", line 629, in polyfit
    c, resids, rank, s = lstsq(lhs, rhs, rcond)
  File "<__array_function__ internals>", line 5, in lstsq
  File "C:\Users\luthor\PycharmProjects\MC\venv\lib\site-packages\numpy\linalg\linalg.py", line 2306, in lstsq
    x, resids, rank, s = gufunc(a, b, rcond, signature=signature, extobj=extobj)
  File "C:\Users\luthor\PycharmProjects\MC\venv\lib\site-packages\numpy\linalg\linalg.py", line 100, in _raise_linalgerror_lstsq
    raise LinAlgError("SVD did not converge in Linear Least Squares")
numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares

*In the SAME debug session:*

**ltt2_poly = np.polyfit(df['dti'] - df['dti'][0], df['close'], 2)**    now works!!!

print(ltt2_poly)
[ 1.00902938e-02 -8.70161869e-02  1.13247743e+01]
pydev调试器:进程36368正在连接 已连接到pydev调试器(构建202.6948.78) 导入本地设置 dti关闭 0 0 11.28 1 3 11.35 2 4 11.10 3 5 10.95 4 6 11.07 5 7 11.45 6 10 11.46 7 11 11.46 8 12 11.74 9 13 11.96 **ltt2_poly=np.polyfit(df['dti']-df['dti'][0],df['close'],2)** 回溯(最近一次呼叫最后一次): 文件“C:\Program Files\JetBrains\PyCharm 2020.1.1\plugins\python\helpers\pydev\\u pydevd\u bundle\pydevd\u exec2.py”,Exec中的第3行 执行官(exp、全局变量、本地变量) 文件“”,第1行,在 文件“”,第5行,polyfit格式 文件“C:\Users\luthor\PycharmProjects\MC\venv\lib\site packages\numpy\lib\polynomy.py”,第629行,polyfit格式 c、 剩余,秩,s=lstsq(左、右、右) 文件“”,第5行,在lstsq中 lstsq中的文件“C:\Users\luthor\PycharmProjects\MC\venv\lib\site packages\numpy\linalg\linalg.py”,第2306行 x、 剩余,秩,s=gufunc(a,b,rcond,signature=signature,extobj=extobj) 文件“C:\Users\luthor\PycharmProjects\MC\venv\lib\site packages\numpy\linalg\linalg.py”,第100行,位于 raise LinAlgError(“SVD未在线性最小二乘中收敛”) numpy.linalg.LINALGEROR:SVD没有以线性最小二乘收敛 *在同一调试会话中:* **ltt2_poly=np.polyfit(df['dti']-df['dti'][0],df['close'],2)**现在可以工作了!!! 打印(ltt2_多边形) [1.00902938e-02-8.70161869e-02 1.13247743e+01] 打印(np.版本) 1.19.1


雪上加霜的是,当我将df降低到5-9之间时,它不会失败。我遗漏了什么???

我没有解决办法,但我可以告诉你,你并不孤单。我也有同样的毛病

我通过在while-try语句中简单地包装NumPy函数来“修复”它

尽管如此: 尝试: NumPy函数 打破 除:
继续

尝试在numpy 1.18中使用conda环境


这个版本似乎比这类错误更早出现,而且对我有效

谢谢-但这实际上是相当令人伤心的。我喜欢numpy的丰富性,我担心不能依靠它来产生一致的输出。我希望这里会有一个结果——希望是我没有把它做好!!因此,当第一次尝试结果出现SVD错误时,执行相同的np.polyfit(df['dti']-df['dti'][0],df['close'],2)再次工作。。。一点额外的信息-我最初的尝试是在PyCharm中,但我在vscode中得到了相同的结果。。。在单独的PC上(排除环境因素)。我真的很想了解原因!随后还尝试了numpy版本1.19.2-还没有乐趣。任何关于根本原因的建议都会受到极大的欢迎。我遇到了类似的问题,我尝试了下面有人建议的1.18.0,然后尝试了除1.19.4之外的所有1.19版本,因为它们目前遇到了一些问题。唯一没有引发此错误的版本是1.19.3。我找不到任何关于为什么会发生这种情况的解释。祝你好运