我正在嘗試計算特定時間範圍內股票價格開發的線性迴歸。代碼運行良好,直到我添加stats.linregress()函數;給我以下錯誤:線性迴歸函數運行到「nan未定義」錯誤
Traceback (most recent call last):
File "C:/[...]/PycharmProjects/Portfolio_Algorithm/Main.py", line 3, in
from scipy import stats
File "C:[...]\Continuum\Anaconda3\lib\site-packages\scipy__init__.py", line 61, in
from numpy import show_config as show_numpy_config
File "C:[...]\Python\Python35\site-packages\numpy__init__.py",line 142, in
from . import add_newdocs
File "C:[...]\Python\Python35\site-packages\numpy\add_newdocs.py",line 13, in
from numpy.lib import add_newdoc
File "C:[...]\Python\Python35\site-packages\numpy\lib__init__.py",line 8, in
from .type_check import *
File "C:[...]\Python\Python35\site-packages\numpy\lib\type_check.py", line 11, in
import numpy.core.numeric as _nx
File "C:[...]\Python\Python35\site-packages\numpy\core__init__.py", line 21, in
from . import umath
File "C:[...]\Python\Python35\site-packages\numpy\core\umath.py",line 30, in
NAN = nan NameError: name 'nan' is not defined
我使用Python 3.5,森蚺(用於SciPy的和numpy的)和PyCharm。
from yahoo_finance import Share
from math import log
from scipy import stats
yahoo = Share('YHOO')
date_list=[]
price_list=[]
timeframe = (yahoo.get_historical('2016-01-01', '2016-10-29'))
for item in timeframe:
date_list.extend([item['Date']])
price_list.extend([log(float(item['Close']))])
slope = stats.linregress(date_list, price_list)
print(slope)
當我運行scipy用戶指南的例子時,我得到了同樣的錯誤。 例(link):
from scipy import stats
np.random.seed(12345678)
x = np.random.random(10)
y = np.random.random(10)
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
print("r-squared:", r_value**2)
有誰知道什麼可能導致這個錯誤嗎?
看起來像一些數字沒有填寫或東西,所以價格列爲南(不是數字)。 'linregress'大概只期望數字,所以會引發錯誤。你將不得不看看'Share()'返回的是什麼,如果它返回的不是數字的東西,你必須在倒退之前處理它。 – Iluvatar
請顯示'umath.py'的更多路徑。這將有助於瞭解哪個軟件包正在生成錯誤。 –
事實上,它將有助於查看* complete *錯誤消息(即完整的回溯)。複製並粘貼到問題中。 –