2013-10-08 4 views
5

निम्नलिखित कॉल: एक त्रुटि मेंRBF प्रक्षेप: LinAlgError: विलक्षण मैट्रिक्स

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

परिणाम:

LinAlgError: singular matrix 
निम्न मानों के साथ

:

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.]) 

क्या मैं करने के लिए क्या कर सकते हैं इससे बचें और अभी भी इंटरपोलेशन समस्या हल करें?

+0

यदि सभी मान 1 हैं, तो आप पहले से ही किसी भी बिंदु पर इंटरपोलेटेड मान को जानते हैं 1. और यदि मान सभी 1 नहीं हैं, तो आप (शायद?) को एकवचन मैट्रिक्स त्रुटि का सामना नहीं करना पड़ेगा। – unutbu

+0

@unutbu - मैंने सोचा कि आरबीएफ प्रत्येक मूल्य के आसपास एक आरबीएफ का उपयोग करेगा। मूल्यों में कमी नहीं होनी चाहिए क्योंकि मैं प्रत्येक आरबीएफ के लिए प्रत्येक 1 से दूर जाता हूं? (यानी मुझे प्रत्येक स्थान के लिए गॉसियन मिलेंगे) – Josh

+0

रेडियल आधार कार्यों के ** योग ** को 'अंक' द्वारा निर्दिष्ट प्रत्येक स्थान पर 1 बराबर होना चाहिए। व्यक्तिगत आरबीएफ उन बिंदुओं पर 1 के बराबर नहीं होंगे। केवल योग बराबर होना चाहिए 1. समस्या यह है कि आरबीएफ की कोई राशि नहीं है जो उन सभी बिंदुओं पर 1 बराबर हो सकती है। – unutbu

उत्तर

6

मुझे लगता है कि आप क्या करने की कोशिश कर रहे हैं kernel density estimation है। आप इस के लिए scipy.stats.gaussian_kde उपयोग कर सकते हैं:

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() 

enter image description here

statsmodels मॉड्यूल भी गिरी घनत्व आकलन के लिए some more elaborate tools है।

0

मुझे एक ही त्रुटि मिली। अंततः मुझे पता चला कि मुझे त्रुटि क्यों मिली है।

आपके पास समान समन्वय के साथ 2 बिंदु हैं। (74,2) मूल्यों की जांच 28 वें, 30 वें में समान समन्वय है।

मेरी सोच में, भले ही आपके पास एक ही बिंदु पर समान मूल्य हो, यह एकवचन मैट्रिक्स त्रुटि को छोड़ देता है।

संबंधित मुद्दे