小编War*_*ser的帖子

Statsmodel使用ARMA

这里有点新,但试图使用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)

python pandas statsmodels

6
推荐指数
1
解决办法
7723
查看次数

Scipy:加速内核密度估计的score_sample方法?

我正在尝试使用核密度估计来获取观察到的概率密度。这就是我使用 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)点组成。

python statistics scipy scikit-learn

6
推荐指数
1
解决办法
2247
查看次数

为什么使用物流sigmoid的tanh定义比scipy的expit更快?

我正在为应用程序使用逻辑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)

python numpy scipy

6
推荐指数
1
解决办法
527
查看次数

Python中的希尔伯特变换?

我正在尝试从头开始编写希尔伯特变换,但不使用除 forfft和之外的任何内置库ifft。我不是专业的数学家,但我在网上找到了这两种 Hilbert 变换算法,一种是 C 语言,一种是 MATLAB。我试图同时实现它们,但它们都没有给我与 SciPy 的 Hilbert 相同的结果。我肯定在我的实施中犯了一些错误。任何见解将不胜感激。


第一个实现:(来自 MATLAB 网站)希尔伯特使用四步算法:

  1. 计算输入序列的 FFT,将结果存储在向量中x

  2. 创建一个向量,h其元素h(i)具有以下值:

    • 1 为了 i = 1, (n/2)+1

    • 2 为了 i = 2, 3, ... , (n/2)

    • 0 为了 i = (n/2)+2, ... , n

  3. 计算的元素之积xh

  4. 计算步骤 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)

c python matlab fft scipy

6
推荐指数
1
解决办法
4915
查看次数

multiprocessing.Pool 进程锁定到单个核心

我在 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 计算机正在运行。关于如何开始缩小问题范围的任何帮助都会有所帮助。谢谢!

python multiprocessing

5
推荐指数
1
解决办法
3539
查看次数

使用python(最好是scipy)对稀疏网格进行插值

我有一个大 (2000 x 2000) 像素网格,其值仅在某些 (x,y) 坐标处定义。例如,它的简化版本如下所示:

-5-3--
---0--
-6--4-
-4-5--
---0--
-6--4-
Run Code Online (Sandbox Code Playgroud)

我如何进行线性插值或最近邻插值,以便我可以在网格中的每个位置都有一个定义的值。

python grid interpolation numpy scipy

5
推荐指数
1
解决办法
4605
查看次数

Python 和 Matlab 中的 Kronecker 产品

我试图从 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 matlab numpy scipy

5
推荐指数
1
解决办法
5584
查看次数

导入 statsmodel.api 时出错。无法导入specfun

我已经为 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)

python scipy statsmodels

5
推荐指数
1
解决办法
2639
查看次数

numpy.loadtxt:如何忽略引号内出现的逗号分隔符?

我有一个 csv 文件,其中一行数据可能如下所示:

10,《苹果、香蕉》,20,...

当我在 Python 中加载数据时,引号内的额外逗号会移动我所有的列索引,因此我的数据不再是一致的结构。虽然我可能会编写一个复杂的算法来遍历每一行并解决问题,但我希望有一种优雅的方法可以将额外的参数传递给 loadtxt(或其他一些函数),该参数将正确忽略引号内的逗号并处理整个报价作为一个值。

请注意,当我将 CSV 文件加载到 Excel 中时,Excel 正确地将该字符串识别为一个值。

python csv numpy

5
推荐指数
1
解决办法
4975
查看次数

在python中创建稀疏循环矩阵

我想在 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 numpy matrix scipy sparse-matrix

5
推荐指数
1
解决办法
1970
查看次数