在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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...