在Django中确定和实现趋势算法

在Django中确定和实现趋势算法,第1张

在Django中确定和实现趋势算法

我能想到的最简单的趋势“算法”就是n天移动平均线。我不确定您的数据的结构如何,但是您说这样的话:

books = {'Twilight': [500, 555, 580, 577, 523, 533, 556, 593],         'Harry Potter': [650, 647, 653, 642, 633, 621, 625, 613],         'Structure and Interpretation of Computer Programs': [1, 4, 15, 12, 7, 3, 8, 19]        }

一个简单的移动平均线仅取最后的

n
值并将其平均:

def moving_av(l, n):    """Take a list, l, and return the average of its last n elements.    """    observations = len(l[-n:])    return sum(l[-n:]) / float(observations)

切片符号只是抓住列表的末尾,从第n个变量到最后一个变量。移动平均线是消除单个尖峰或跌​​落可能引入的任何噪声的相当标准的方法。该函数可以这样使用:

book_scores = {}for book, reader_list in books.iteritems():    book_scores[book] = moving_av(reader_list, 5)

您将需要计算平均的天数。如果您想强调近期趋势,也可以考虑使用加权移动平均线。

如果您想关注的是较少关注绝对读者群的内容,而是关注增加读者群的内容,只需找到30天移动平均线和5天移动平均线的变化百分比:

d5_moving_av = moving_av(reader_list, 5)d30_moving_av = moving_av(reader_list, 30)book_score = (d5_moving_av - d30_moving_av) / d30_moving_av

使用这些简单的工具,您可以灵活地强调过去的趋势以及想要消除(或不消除)峰值的程度。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5667156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存