这里有点新,但试图使用statsmodel ARMA预测工具.我从雅虎导入了一些股票数据并得到ARMA给我适合的参数.但是,当我使用预测代码时,我收到的是一个错误列表,我似乎无法弄清楚.不太确定我在这里做错了什么:
import pandas
import statsmodels.tsa.api as tsa
from pandas.io.data import DataReader
start = pandas.datetime(2013,1,1)
end = pandas.datetime.today()
data = DataReader('GOOG','yahoo')
arma =tsa.ARMA(data['Close'], order =(2,2))
results= arma.fit()
results.predict(start=start,end=end)
Run Code Online (Sandbox Code Playgroud)
错误是:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
C:\Windows\system32\<ipython-input-84-25a9b6bc631d> in <module>()
13 results= arma.fit()
14 results.summary()
---> 15 results.predict(start=start,end=end)
D:\Python27\lib\site-packages\statsmodels-0.5.0-py2.7.egg\statsmodels\base\wrapp
er.pyc in wrapper(self, *args, **kwargs)
88 results = object.__getattribute__(self, '_results')
89 data = results.model.data
---> 90 return data.wrap_output(func(results, *args, **kwargs), how)
91
92 argspec = inspect.getargspec(func)
D:\Python27\lib\site-packages\statsmodels-0.5.0-py2.7.egg\statsmodels\tsa\arima_
model.pyc in predict(self, start, end, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用核密度估计来获取观察到的概率密度。这就是我使用 kde 的方式:
from sklearn.neighbors import KernelDensity
kde = KernelDensity().fit(sample)
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试获取每个点的概率密度时
kde_result = kde.score_samples(sample)
Run Code Online (Sandbox Code Playgroud)
速度很慢。我怎样才能加快速度?
样本由300,000 (x,y)点组成。
我正在为应用程序使用逻辑sigmoid.我比较了使用scipy.special函数的时间expit,而不是使用S形的双曲正切定义.
我发现双曲正切是快3倍.这里发生了什么?我还在排序的数组上测试了时间,看看结果是否有任何不同.
以下是在IPython中运行的示例:
In [1]: from scipy.special import expit
In [2]: myexpit = lambda x: 0.5*tanh(0.5*x) + 0.5
In [3]: x = randn(100000)
In [4]: allclose(expit(x), myexpit(x))
Out[4]: True
In [5]: timeit expit(x)
100 loops, best of 3: 15.2 ms per loop
In [6]: timeit myexpit(x)
100 loops, best of 3: 4.94 ms per loop
In [7]: y = sort(x)
In [8]: timeit expit(y)
100 loops, best of 3: 15.3 ms per loop
In [9]: timeit …Run Code Online (Sandbox Code Playgroud) 我正在尝试从头开始编写希尔伯特变换,但不使用除 forfft和之外的任何内置库ifft。我不是专业的数学家,但我在网上找到了这两种 Hilbert 变换算法,一种是 C 语言,一种是 MATLAB。我试图同时实现它们,但它们都没有给我与 SciPy 的 Hilbert 相同的结果。我肯定在我的实施中犯了一些错误。任何见解将不胜感激。
第一个实现:(来自 MATLAB 网站)希尔伯特使用四步算法:
计算输入序列的 FFT,将结果存储在向量中x。
创建一个向量,h其元素h(i)具有以下值:
1 为了 i = 1, (n/2)+1
2 为了 i = 2, 3, ... , (n/2)
0 为了 i = (n/2)+2, ... , n
计算的元素之积x和h。
计算步骤 3 中获得的序列的逆 FFT,并返回结果的第一个n元素。
我的尝试:
def generate_array(n):
a = np.hstack((np.full(n//2+1, 2), np.zeros(n//2-1)))
a[[0, n//2]] = 1
return a
def hilbert_from_scratch_2(u):
fft_result = fft(u) …Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 12.04 上的 Python 中使用 multiprocessing.Pool,我遇到了一个奇怪的问题;当我调用map_async我的 Pool 时,我产生了 8 个进程,但它们都在争夺对我的 8 核机器的单个内核的支配地位。完全相同的代码用光了我的 Macbook Pro 中的两个内核,以及我的其他 Ubuntu 12.04 桌面的所有四个内核(用htop在所有情况下都使用)。
我的代码太长,无法全部发布,但重要的部分是:
P = multiprocessing.Pool()
results = P.map_async( unwrap_self_calc_timepoint, zip([self]*self.xLen,xrange(self.xLen)) ).get(99999999999)
P.close()
P.join()
ipdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
根据本文的建议,whereunwrap_self_calc_timepoint是一个将必要self参数传递给类的包装函数。
所有三台计算机都使用 Python 2.7.3,我真的不知道从哪里开始寻找为什么那台 Ubuntu 计算机正在运行。关于如何开始缩小问题范围的任何帮助都会有所帮助。谢谢!
我有一个大 (2000 x 2000) 像素网格,其值仅在某些 (x,y) 坐标处定义。例如,它的简化版本如下所示:
-5-3--
---0--
-6--4-
-4-5--
---0--
-6--4-
Run Code Online (Sandbox Code Playgroud)
我如何进行线性插值或最近邻插值,以便我可以在网格中的每个位置都有一个定义的值。
我试图从 MATLAB 在 Python 中重现结果。但是,我似乎无法正确理解。这是正确的 MATLAB 代码:
nx = 5;
ny = 7;
x = linspace(0, 1, nx); dx = x(2) - x(1);
y = linspace(0, 1, ny); dy = y(2) - y(1);
onex = ones(nx, 1);
oney = ones(ny, 1);
Dx = spdiags([onex -2*onex onex], [-1 0 1], nx, nx);
Dy = spdiags([oney -2*oney oney], [-1 0 1], ny, ny);
Ix = eye(nx); Iy = eye(ny);
L = kron(Iy, Dx);
size(L) % 35 35
Run Code Online (Sandbox Code Playgroud)
现在,这是 Python 代码:
nx = …Run Code Online (Sandbox Code Playgroud) 我已经为 python 导入 statsmodel.api 1000 次。刚刚开始在导入时出现随机错误。有人遇到过这个错误吗?代码如下。
我使用的是 Windows,我的 python 是通过 conda 包更新的。
谢谢大家。
`import statsmodels.api as sm`
Run Code Online (Sandbox Code Playgroud)
ImportError Traceback (most recent call last)
<ipython-input-50-6030a6549dc0> in <module>()
----> 1 import statsmodels.api as sm
C:\Users\rebortz\Anaconda\lib\site-packages\statsmodels\api.py in <module>()
----> 1 from . import iolib
2 from . import datasets
3 from . import tools
4 from .tools.tools import add_constant, categorical
5 from . import regression
C:\Users\rebortz\Anaconda\lib\site-packages\statsmodels\iolib\__init__.py in <module>()
----> 1 from .foreign import StataReader, genfromdta, savetxt
2 from .table import SimpleTable, csv2st
3 …Run Code Online (Sandbox Code Playgroud) 我有一个 csv 文件,其中一行数据可能如下所示:
10,《苹果、香蕉》,20,...
当我在 Python 中加载数据时,引号内的额外逗号会移动我所有的列索引,因此我的数据不再是一致的结构。虽然我可能会编写一个复杂的算法来遍历每一行并解决问题,但我希望有一种优雅的方法可以将额外的参数传递给 loadtxt(或其他一些函数),该参数将正确忽略引号内的逗号并处理整个报价作为一个值。
请注意,当我将 CSV 文件加载到 Excel 中时,Excel 正确地将该字符串识别为一个值。
我想在 Python 中创建一个大的(比如 10^5 x 10^5)稀疏循环矩阵。它在位置[i,i+1], [i,i+2], [i,i+N-2], [i,i+N-1]处每行有 4 个元素,我假设索引的周期性边界条件(即[10^5,10^5]=[0,0], [10^5+1,10^5+1]=[1,1]等等)。我查看了 scipy 稀疏矩阵文档,但我很困惑(我是 Python 新手)。
我可以用 numpy 创建矩阵
import numpy as np
def Bc(i, boundary):
"""(int, int) -> int
Checks boundary conditions on index
"""
if i > boundary - 1:
return i - boundary
elif i < 0:
return boundary + i
else:
return i
N = 100
diffMat = np.zeros([N, N])
for i in np.arange(0, N, 1):
diffMat[i, [Bc(i+1, N), Bc(i+2, N), Bc(i+2+(N-5)+1, …Run Code Online (Sandbox Code Playgroud) python ×10
scipy ×7
numpy ×5
matlab ×2
statsmodels ×2
c ×1
csv ×1
fft ×1
grid ×1
matrix ×1
pandas ×1
scikit-learn ×1
statistics ×1