微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中平滑3D数据,LinAlgError:矩阵是奇异的

如何解决在Python中平滑3D数据,LinAlgError:矩阵是奇异的

我有一些x和y相关的z值,这些值是通过实验而不是通过已知的基础函数计算的。我正在尝试获取数据的等高线图,但它看起来不太好。我正在尝试查看总体趋势,但是我所看到的只是原始数据的颤抖,嘈杂的行为(在底部链接)。 这是原始数据和原始数据的轮廓图:

Raw Data Scatter Plot

Contour Plot of Raw Data

我已经研究了How to smooth a curve in the right way?这个问题的答案,但是我不知道如何将其归纳为3D。我尝试使用插值法对其进行平滑处理,该方法适用于较小的数据集,但是现在我的代码抛出了无法解决错误。这是我基于Python : 2d contour plot from 3 lists : x,y and rho?的答案的插值代码

# Set up a regular grid of interpolation points
xi,yi = np.linspace(x.min(),x.max(),2*len(x)),np.linspace(y.min(),y.max(),2*len(y))
Xi,Yi = np.meshgrid(xi,yi)

# Interpolate
rbf = scipy.interpolate.Rbf(x,y,z,function='linear')
zi = rbf(Xi,Yi)

plt.imshow(zi,vmin=z.min(),vmax=gz.max(),origin='lower',extent=[x.min(),y.min(),y.max()])
plt.colorbar(orientation='horizontal')
plt.show()

及其引发的错误

---------------------------------------------------------------------------
LinAlgError                               Traceback (most recent call last)
<ipython-input-14-94fc6fa88c01> in <module>
      6 
      7 # Interpolate
----> 8 rbf = scipy.interpolate.Rbf(t1,t2,gbenergy,function='linear')
      9 zi = rbf(Xi,Yi)
     10 

~/basicVenv/lib/python3.8/site-packages/scipy/interpolate/rbf.py in __init__(self,*args,**kwargs)
    255                 self.nodes[:,i] = linalg.lu_solve((lu,piv),self.di[:,i])
    256         else:
--> 257             self.nodes = linalg.solve(self.A,self.di)
    258 
    259     @property

~/basicVenv/lib/python3.8/site-packages/scipy/linalg/basic.py in solve(a,b,sym_pos,lower,overwrite_a,overwrite_b,debug,check_finite,assume_a,transposed)
    212                                                (a1,b1))
    213         lu,ipvt,info = getrf(a1,overwrite_a=overwrite_a)
--> 214         _solve_check(n,info)
    215         x,info = getrs(lu,b1,216                         trans=trans,overwrite_b=overwrite_b)

~/basicVenv/lib/python3.8/site-packages/scipy/linalg/basic.py in _solve_check(n,info,lamch,rcond)
     27                          '.'.format(-info))
     28     elif 0 < info:
---> 29         raise LinAlgError('Matrix is singular.')
     30 
     31     if lamch is None:

LinAlgError: Matrix is singular.

我尝试用Singular matrix issue with Numpy的答案来解决此问题,但没有运气。我愿意进行平滑或插值或其他选择,我只是希望轮廓图看起来比这更好。任何帮助将不胜感激。

我的数据:https://github.com/lydiash/stackOverflowDataArchive/blob/master/data.csv

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。