map*_*pro 9 python interpolation numpy spline burndowncharts
我有一个简单的numpy数组,每个日期都有一个数据点.像这样的东西:
>>> import numpy as np
>>> from datetime import date
>>> from datetime import date
>>> x = np.array( [(date(2008,3,5), 4800 ), (date(2008,3,15), 4000 ), (date(2008,3,
20), 3500 ), (date(2008,4,5), 3000 ) ] )
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来推断未来的数据点:日期(2008,5,1),日期(2008年,5,20)等?我知道它可以用数学算法完成.但在这里,我正在寻找一些低调的果实.实际上我喜欢numpy.linalg.solve所做的,但它看起来并不适用于外推.也许我绝对错了.
实际上更具体地说,我正在构建一个烧毁图表(xp术语):'x = date和y =要完成的工作量',所以我已经完成了已经完成的冲刺,我想要想象未来的sprint如何如果目前的情况持续下去将会发生.最后我想预测发布日期.因此,"要完成的工作量"的性质总是落在烧毁图表上.另外,我想获得推断的发布日期:音量变为零时的日期.
这一切都是为了向开发团队展示事情的进展.这里的准确性并不那么重要:)开发团队的动机是主要因素.这意味着我对非常近似的外推技术绝对没问题.
den*_*nis 17
外推生成垃圾太容易了; 试试这个.当然可以进行许多不同的推断; 一些产生明显的垃圾,一些非明显的垃圾,许多是不明确的.
alt text http://i39.tinypic.com/am62wp.png
""" extrapolate y,m,d data with scipy UnivariateSpline """
import numpy as np
from scipy.interpolate import UnivariateSpline
# pydoc scipy.interpolate.UnivariateSpline -- fitpack, unclear
from datetime import date
from pylab import * # ipython -pylab
__version__ = "denis 23oct"
def daynumber( y,m,d ):
""" 2005,1,1 -> 0 2006,1,1 -> 365 ... """
return date( y,m,d ).toordinal() - date( 2005,1,1 ).toordinal()
days, values = np.array([
(daynumber(2005,1,1), 1.2 ),
(daynumber(2005,4,1), 1.8 ),
(daynumber(2005,9,1), 5.3 ),
(daynumber(2005,10,1), 5.3 )
]).T
dayswanted = np.array([ daynumber( year, month, 1 )
for year in range( 2005, 2006+1 )
for month in range( 1, 12+1 )])
np.set_printoptions( 1 ) # .1f
print "days:", days
print "values:", values
print "dayswanted:", dayswanted
title( "extrapolation with scipy.interpolate.UnivariateSpline" )
plot( days, values, "o" )
for k in (1,2,3): # line parabola cubicspline
extrapolator = UnivariateSpline( days, values, k=k )
y = extrapolator( dayswanted )
label = "k=%d" % k
print label, y
plot( dayswanted, y, label=label ) # pylab
legend( loc="lower left" )
grid(True)
savefig( "extrapolate-UnivariateSpline.png", dpi=50 )
show()
Run Code Online (Sandbox Code Playgroud)
补充说:Scipy票证说,"scipy.interpolate中FITPACK类的行为比文档导致人们相信的要复杂得多" - 其他软件也是如此.
| 归档时间: |
|
| 查看次数: |
17893 次 |
| 最近记录: |