输入到聚类算法

时间:2017-12-21 17:32:37

标签: python-3.x pandas scikit-learn

我有250个时间序列,我将对它们进行聚类,以查看哪个时间序列具有或多或少相同的行为。但我的问题是,无论我在google和StackOverFlow中搜索过什么,我都找不到一个例子来告诉我是否必须将所有时间序列合并在一起?或者可以将它们保存在分开的变量中?有关输入的任何解释都会有所帮助。

  • 我使用python 3.6进行编程,对于群集,我使用sci-kit learn library
  • 我的每个时间序列都是一个带有一列的pandas数据框

1 个答案:

答案 0 :(得分:1)

SciKit聚类方法的输入格式因方法而异。点击the list of Classes上的方法名称,向下滚动到该类的fit方法的说明;这是进行聚类的那个。对于大多数方法,例如K-means,数据必须采用2D形状阵列(n_samples,n_features)的形式。对您而言,样本数量为250,特征数量是时间序列的长度(它们都必须具有完全相同的长度)。

但我对使用2D数组作为输入持谨慎态度,因为所有的值都将被视为单独的功能,从而失去了时间参数的概念。如果一个系列只是另一个系列的转换,它可能被视为完全不同的东西。

一些SciKit聚类方法允许您预先计算250乘250距离矩阵(测量两个系列的不同)或亲和力/相似度矩阵(测量它们的相似程度)。这可以传递而不是实际数据。矩阵可以在双循环中计算,250乘250也不算太差。这些方法可以采用方阵而不是原始数据:

我建议在继续聚类之前对time-series similarity measures进行一些研究(用于计算该方阵)。