Interpolación RBF: LinAlgError: matriz singular

La siguiente convocatoria:

rbf = Rbf(points[0], points[1], values,epsilon=2) 

resulta en un error:

 LinAlgError: singular matrix 

con los siguientes valores:

 In [3]: points Out[3]: (array([71, 50, 48, 84, 71, 74, 89, 76, 70, 77, 74, 79, 83, 71, 72, 78, 73, 84, 75, 65, 73, 82, 48, 86, 74, 86, 66, 74, 68, 74, 81, 74, 88, 66, 57, 50, 72, 86, 72, 92, 81, 67, 82, 78, 69, 70, 73, 71, 76, 72, 74, 75]), array([32, 34, 4, 35, 1, 7, 47, 16, 37, 14, 65, 18, 32, 4, 3, 27, 25, 34, 18, 25, 6, 25, 34, 41, 16, 35, 44, 2, 32, 2, 37, 60, 45, 32, 33, 42, 54, 31, 18, 38, 24, 18, 45, 48, 9, 63, 56, 45, 9, 59, 5, 12])) In [4]: values Out[4]: array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) 

¿Qué puedo hacer para evitarlo y resolver el problema de interpolación?

Creo que lo que estás tratando de hacer es estimar la densidad del kernel . Puedes usar scipy.stats.gaussian_kde para esto:

 import numpy as np from scipy.stats import gaussian_kde from matplotlib import pyplot as pp # kernel density estimate of the PDF kde = gaussian_kde(points) # evaluate the estimated PDF on a grid x,y = np.mgrid[40:101,-20:101] z = kde((x.ravel(),y.ravel())).reshape(*x.shape) # plot fig,ax = pp.subplots(1,1) ax.hold(True) pc = ax.pcolor(x,y,z) cb = pp.colorbar(pc) cb.ax.set_ylabel('Probability density') ax.plot(points[0],points[1],'o',mfc='w',mec='k') pp.show() 

introduzca la descripción de la imagen aquí

El módulo statsmodels también tiene algunas herramientas más elaboradas para la estimación de la densidad del kernel.

Tengo el mismo error. Finalmente encontré por qué me sale el error.

Tienes 2 puntos con la misma coordenada. (74,2) verifique que los valores tengan la misma coordenada en 28, 30.

En mi opinión, incluso si tiene el mismo valor en el mismo punto, emite un error de matriz singular.