首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的假最近邻

Python中的假最近邻
EN

Stack Overflow用户
提问于 2021-12-23 16:10:46
回答 1查看 615关注 0票数 2

我有一个包含多变量时间序列数据的熊猫数据。一列代表温度,一列代表湿度,一列代表风。例如,如下所示的数据文件:

代码语言:javascript
运行
复制
       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包来应用在数据文件上嵌入的标签。下面的链接显示了这个包如何对数据执行嵌入:

https://giotto-ai.github.io/gtda-docs/latest/modules/generated/time_series/embedding/gtda.time_series.TakensEmbedding.html

Takens嵌入算法需要两个输入,即time_delay和维数。如果我们有一个单变量时间序列,我们就可以对时间序列数据执行一个启发式函数来寻找最优的time_delay和维数。启发功能可在以下链接中获得:

https://giotto-ai.github.io/gtda-docs/latest/modules/generated/time_series/embedding/gtda.time_series.takens_embedding_optimal_parameters.html#gtda.time_series.takens_embedding_optimal_parameters

但是,当我们处理多变量时间序列数据时,就像我上面的数据一样,我们应该使用伪最近邻算法来寻找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中还有其他方法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-03 14:48:35

一个叫做茶匙的库有一个伪最近邻算法的实现。它还具有互信息和嵌入定理。下面是链接:https://lizliz.github.io/teaspoon/FNN.html

我也相信有人用python在github上写了TISEAN。下面是另一个链接:https://github.com/galaunay/pytisean

如果您想使用曹的改进的FNN方法,我在python中使用了R,所以如果您有所需的包,可以使用以下内容:

代码语言:javascript
运行
复制
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])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70464683

复制
相关文章

相似问题

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