首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python - LinAlgError: SVD没有在线性最小二乘中收敛-数据中没有Nans或infs

Python - LinAlgError: SVD没有在线性最小二乘中收敛-数据中没有Nans或infs
EN

Stack Overflow用户
提问于 2020-09-29 10:13:41
回答 1查看 694关注 0票数 1
代码语言:javascript
运行
复制
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)

有时这是可行的,有时是可行的,并抛出下面的错误。有人能重复这句话吗?或者有人知道发生了什么吗?对于像这样好的数据,它永远不会抛出错误。

代码语言:javascript
运行
复制
*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*
EN

回答 1

Stack Overflow用户

发布于 2020-09-30 14:59:01

我在这里发现了完全相同的问题:numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares on first run only

从那时起,在做数据科学学习课程时,又遇到了同样的问题。如果你再次运行这段完全相同的代码,它将会工作…没有收敛是有正当理由的,比如NaNs等--但正如疯狂科学家指出的那样,SVD似乎存在一个真正的问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64111921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档