我有一个包含多变量时间序列数据的熊猫数据。一列代表温度,一列代表湿度,一列代表风。例如,如下所示的数据文件:
temperature humidity wind
0 59 97 8
1 59 89 8
2 58 79 7
3 58 74 7
4 60 74 7
5 62 76 10然后,将接受嵌入(时延嵌入)算法应用于这一数据模型。我使用乔托-TDA包来应用在数据文件上嵌入的标签。下面的链接显示了这个包如何对数据执行嵌入:
Takens嵌入算法需要两个输入,即time_delay和维数。如果我们有一个单变量时间序列,我们就可以对时间序列数据执行一个启发式函数来寻找最优的time_delay和维数。启发功能可在以下链接中获得:
但是,当我们处理多变量时间序列数据时,就像我上面的数据一样,我们应该使用伪最近邻算法来寻找time_delay和维数的最优值。但是我还没有在python中找到任何函数来在我的dataframe上运行假的最近的邻居。我刚刚找到了一个名为TISEAN的包,它可以对时间序列数据执行虚假的最近邻。TISEAN包中的伪最近邻算法的链接如下:
https://www.pks.mpg.de/tisean/TISEAN_2.1/docs/chaospaper/node9.html
和
https://www.pks.mpg.de/tisean//TISEAN_2.1/docs/docs_c/false_nearest.html
但是如您所见,包不是用python编写的,我认为是用C语言编写的。
我想知道如何使用python中的TISEAN包在我的dataframe上执行虚假的最近邻居?或者,除了使用TISEAN对我的多变量时间序列数据执行假最近邻算法之外,在python中还有其他方法吗?
发布于 2022-02-03 14:48:35
一个叫做茶匙的库有一个伪最近邻算法的实现。它还具有互信息和嵌入定理。下面是链接:https://lizliz.github.io/teaspoon/FNN.html
我也相信有人用python在github上写了TISEAN。下面是另一个链接:https://github.com/galaunay/pytisean
如果您想使用曹的改进的FNN方法,我在python中使用了R,所以如果您有所需的包,可以使用以下内容:
import rpy2.robjects as ro
from rpy2.robjects.packages import importr
from rpy2.robjects import numpy2ri
nonlinearTseries = importr("nonlinearTseries")
data = numpy2ri.numpy2rpy(savgol_price)
cao_emb_dim = nonlinearTseries.estimateEmbeddingDim(
data, # time series
len(data), # number of points to use, use entire series
62, # time delay
20, # max no. of dimension
0.95, # threshold value
0.1, # max relative change
True, # do the plot
"Computing the embedding dimension", # main
"dimension (d)", # x_label
"E1(d) & E2(d)", # y_label
ro.NULL, # x_lim
ro.NULL, # y_lim
1e-5 # add a small amount of noise to the original series to avoid the
# appearance of false neighbours due to discretization errors.
# This also prevents the method to fail with periodic signals, 0 for no noise
)
embedding_dimension = int(cao_emb_dim[0])https://stackoverflow.com/questions/70464683
复制相似问题