我一直在尝试使用Holt-Winters算法的这种实现来进行Python中的时间序列预测,但是遇到了障碍......基本上,对于某些(正)输入系列,它有时会预测负数,这应该清楚不是这样的.即使预测不是负面的,它们有时也是非常不准确的 - 比它们应该的数量级更高/更低.为算法提供更多的数据周期似乎没有帮助,实际上往往会使预测变得更糟.
我正在使用的数据具有以下特征,可能是问题:
非常频繁地采样(每15分钟一个数据点,而不是示例使用的月度数据) - 但从我所读到的,Holt-Winters算法应该没有问题.也许这表明实施存在问题?
有多个周期 - 每日峰值(即每96个数据点)以及周末数据的每周周期显着低于工作日数据 - 例如工作日可以在4000左右达到峰值但周末达到峰值1000 - 但即使我只给出它是工作日的数据,我遇到了负数问题.
对于Holt-Winters算法的实现或使用,我是否还缺少一些东西?我不是统计学家,所以我使用上面链接中指出的alpha,beta和gamma的'默认'值 - 这可能是问题,是否有更好的方法来计算这些值?
或者......有没有比Holt-Winters更好的算法?最后,我只想根据历史数据创建合理的预测.我尝试过单指数和双指数平滑,但(据我所知)并不支持数据的周期性.
任何帮助/输入将不胜感激!
有没有办法让J使用多个核心?我认为APL/J的部分好处是语言结构很好地适用于并行解决方案.
看看我的CPU使用情况(我在OSX上),显然只有一个处理器在使用中.
我有一个重要的功能f作用于列表,我不明白为什么它不能将列表分成4个部分,并重新组合结果?
如果我想计算一个^ b mod c,那么有一种有效的方法可以做到这一点,而无需完全计算^ b.
然而,当编程时,如果我写,f g x则无论如何计算g(x)f.
J在特殊情况下提供了f和g的组合,模幂函数就是其中之一.例如,以下运行速度非常快.
1000&| @ (2&^) 10000000x
Run Code Online (Sandbox Code Playgroud)
这是因为'atop'连接@告诉语言如果可能的话组成函数.如果我删除它,它会慢得令人难以忍受.
但是,如果我想使用x ^ x,则^~不再有效,并且我得到大值的限制错误.然而,绑定那些大值确实有效.
所以
999&| @ (100333454&^) 100333454x
Run Code Online (Sandbox Code Playgroud)
执行得很快很快但是
999&| @ ^~ 100333454x
Run Code Online (Sandbox Code Playgroud)
给了我一个极限错误 - RHS太大了.
我是否正确地认为在这种情况下,J没有使用高效的幂模数算法?
作为JI的初学者,我常常遇到隐性程序,与更熟悉的显式形式相比,它们看起来相当拜占庭.
现在只是因为我发现解释困难并不意味着默会形式是错误的或错误的.通常,默认形式比显式形式短得多,因此更容易在视觉上同时看到所有形式.
专家提问:这些隐性形式是否表达了更好的结构感,并可能提炼出潜在的计算机制?还有其他好处吗?
我希望答案是肯定的,对于一些非平凡的例子也是如此......
J将通过p:n回答第n个素数.
如果我要求第1亿的素数,我会得到一个近乎即时的答案.我无法想象J很快就会对那个素数进行筛选,但是不能在表中查找,因为该表的大小约为1GB.
有一些方程给出了一个边界的素数的近似值,但它们只是近似值.
J如何快速找到答案?
我正在使用distutils,并有一个模块spammodule.c编译,链接和完美的工作.
但是如果我将该模块重命名为.cpp并重新运行distutils构建/安装序列,则模块会构建但在python中导入时会出错:
ImportError:动态模块没有定义init函数(initspam)
CPP中的新模块是否有不同的格式而不是C?
为什么2(*i.)5评估0 2 4 6 8?
很明显2*i.5,但是(),从右到左创建一个钩子并进行评估似乎我们得到了
(*i.)5 == 0 5 10 15 20
Run Code Online (Sandbox Code Playgroud)
并且2不会对该列表采取行动 - 所以我哪里错了?
Stroustrup在"C++的设计和演变"(Addison Wesley,1994)中说,"低级事件,例如算术溢出和除以零,假定由专用的低级机制而不是异常处理这使得C++能够在算术运算时匹配其他语言的行为.它还避免了在流水线严重的体系结构中出现的问题,其中除以零之类的事件是异步的.
Q1:如果不是例外,为什么GCC会报告一个而不是一个较低级别的错误?
Q2:鉴于我正在划分整数,为什么报告为浮点数?
鉴于我无法用catch(...)来捕捉它,这是非常误导的.显然我可以测试并避免整个'错误',但我的观点是,对于一个认为它可能是异常(合理)的初学者来说,它是非常混乱的,试图抓住它,然后发现它不是异常,并且对报告的运行时异常感到奇怪.
我的编译器是gcc版本4.2.1(Apple Inc. build 5666)(第3点)
准确澄清CPU异常,FPU异常,语言异常和操作系统异常之间的区别可能会解决这个问题.
示例程序:
int main(){
int i=1/0;
return i;
}
Run Code Online (Sandbox Code Playgroud)
结果输出:
浮点异常