首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间序列分割

时间序列分割
EN

Stack Overflow用户
提问于 2012-03-17 09:58:42
回答 1查看 3.9K关注 0票数 4

我有时间序列数组,平均每个数组大约有1000个值。我需要独立地识别每个数组中的时间序列段。

我目前正在使用这种方法来计算数组和分段项目的平均值,只要每个项目之间的耗时超过它。我找不到太多关于如何实现这一点的标准的信息。我相信还有更合适的方法。

这是我目前使用的代码。

代码语言:javascript
复制
def time_cluster(input)
    input.sort!
    differences = (input.size-1).times.to_a.map {|i| input[i+1] - input[i] }
    mean = differences.mean

    clusters = []
    j = 0

    input.each_index do |i|
      j += 1 if i > 0 and differences[i-1] > mean
      (clusters[j] ||= []) << input[i]
    end

    return clusters
  end

这段代码中的几个示例

代码语言:javascript
复制
time_cluster([1, 2, 3, 4, 7, 9, 250, 254, 258, 270, 292, 340, 345, 349, 371, 375, 382, 405, 407, 409, 520, 527])

输出

代码语言:javascript
复制
1  2  3  4  7  9, sparsity 1.3
250  254  258  270  292,  sparsity 8.4
340  345  349  371  375  382  405  407  409, sparsity 7
520  527, sparsity 3

另一个数组

代码语言:javascript
复制
time_cluster([1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 1000, 1020, 1040, 1060, 1080, 1200])

输出

代码语言:javascript
复制
1  2  3  4  5  6  7  8  9  10, sparsity 0.9
1000  1020  1040  1060  1080, sparsity 16
1200
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-17 06:55:47

使用K-Means。http://ai4r.rubyforge.org/machineLearning.html

代码语言:javascript
复制
gem install ai4r

奇异值分解可能也会让您感兴趣。http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/

如果你不能在Ruby中做到这一点,这里有一个很好的Python例子。

Unsupervised clustering with unknown number of clusters

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9746596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档