我正在做我認爲對我的數據的一個簡單迴歸,但有些事情是錯誤的。我使用csv2rec來讀取我的數據,但然後我打印迴歸參數m和b我得到nan nan。csv2rec和polyfit的問題
如果要預覽CSV文件這裏是它的一些:
"Oxide","ooh","oh",
"MoO",3.06,0.01,
"IrO",2.79,-0.23,
我要的是對兩行的迴歸。 x = a.oh
和y = a.ooh
這裏是我使用
import matplotlib
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
from pylab import polyfit
a = mlab.csv2rec('rutilecsv.csv')
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlabel('E_OH/eV', fontsize=12)
ax.set_ylabel('E_OOH/eV', fontsize=12)
(m, b) = polyfit(a.oh, a.ooh, 1)
print m, b
ax.plot(a.oh, a.ooh, 'go')
plt.axis([-2, 3, 1, 6])
plt.show()
是否有可能csv2rec沒有將您的第一行解釋爲列名,因此不能轉換其他數值? – Edmon 2012-08-02 14:01:58
FWIW我無法複製此內容。用你的示例數據文件,我得到了'(m,b)= 1.125,3.04875'和一個有兩個綠色圓圈的圖。 [mpl 1.1.1rc。]你確定沒有列出的數據的所有部分都可以,特別是:最後? 「any(numpy.isnan(a.ooh))」和「any(numpy.isnan(a.oh))'返回什麼? – DSM 2012-08-02 14:02:51
如果我在修改了csv文件後才運行腳本,那麼我就會發現它。在情節中,如果你有空的元素,但在polyfit中卻沒有關係。謝謝。 – user1488097 2012-08-02 14:14:06