您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

在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

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

Go 2022/1/1 18:49:55 有347人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶