我不斷收到這些錯誤:KDE與13點的尺寸使用numpy的矩陣(核密度估計)和matplotlib
Traceback (most recent call last): File "D:/Dropbox/Public/Data Processor/src/dP.py", line 69, in <module>
gkde = stats.gaussian_kde(kdeData) File "D:\Python27\lib\site-packages\scipy\stats\kde.py", line 86, in
__init__
self._compute_covariance() File "D:\Python27\lib\site-packages\scipy\stats\kde.py", line 339, in
_compute_covariance
self.inv_cov = linalg.inv(self.covariance) File "D:\Python27\lib\site-packages\scipy\linalg\basic.py", line 327, in inv
raise LinAlgError("singular matrix") numpy.linalg.linalg.LinAlgError: singular matrix
我不知道如何適用於我的數據。這是一個巨大的文字牆,但如果它有助於至少看到代碼在這裏應用的上下文是http://pastebin.com/Myx5TpYy。每個矩陣都有12個數據點,說實話,我不確定我是否需要所有的數據點,但我想知道發生了什麼問題會幫助我解決問題。 這裏是我一直試圖去上班
from decimal import *
import csv
import numpy as np
from scipy import stats
import matplotlib.pylab as plt
matrix = []
col1 = []
col2 = []
col3 = []
col4 = []
col5 = []
col6 = []
col7 = []
col8 = []
col9 = []
col10 = []
col11 = []
col12 = []
for line in open("data.txt", "r"):
col_1, col_2, col_3, col_4, col_5, col_6, col_7, col_8, col_9, col_10, col_11, col_12 = line.split()
col_1_val = col_1[:]
col_2_val = col_2[:]
col_3_val = col_3[:]
col_4_val = col_4[:]
col_5_val = col_5[:]
col_6_val = col_6[:]
col_7_val = col_7[:]
col_8_val = col_8[:]
col_9_val = col_9[:]
col_10_val = col_10[:]
col_11_val = col_11[:]
col_12_val = col_12[:]
matrix.append([Decimal(col_1_val), Decimal(col_2_val), Decimal(col_3_val), Decimal(col_4_val), Decimal(col_5_val), Decimal(col_6_val), Decimal(col_7_val), Decimal(col_8_val), Decimal(col_8_val), Decimal(col_9_val), Decimal(col_10_val), Decimal(col_11_val), Decimal(col_12_val)])
kdeData = np.array(matrix).T
print kdeData
gkde = stats.gaussian_kde(kdeData)
ind = np.linspace(-13,13,512)
kdepdf = gkde.evaluate(matrix)
plt.figure()
plt.hist(xn, bins=20, normed=1)
plt.plot(ind, stats.norm.pdf(ind), color="r", label='DGP normal')
plt.plot(in, kdepdf, label='kde', color="g") plt.title('Kernel Density Estimation')
plt.legend()
plt.show()
能否請您提供'data.txt'文件的內容? – 2012-02-21 06:09:11