Lut*_*hor 6 python numpy pandas
我一直在努力解决一个已知且有记录的 SVD 收敛问题。在阅读了其他人提出的类似问题后,我仔细检查了我的数据并将其缩减为一个很小的 DataFrame - 仅 10 行/2 列 - 都是 float64 的。绝对不存在 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)
Run Code Online (Sandbox Code Playgroud)
运行时:
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]
Run Code Online (Sandbox Code Playgroud)
打印(np.版本)1.19.1
雪上加霜的是,当我将 df 降低到 5-9 之间时 - 它可以正常工作而不会失败。我缺少什么?
小智 4
我没有办法解决这个问题,但我可以告诉你,你并不孤单。我有同样的错误。
我通过简单地将 NumPy 函数包装在 while-try 语句中来“修复”它。
while True: try: NumPy-函数break except: continue
| 归档时间: |
|
| 查看次数: |
6231 次 |
| 最近记录: |