sách gpt4 ai đã đi

Biểu diễn SAX của chuỗi thời gian

In lại 作者:行者123 更新时间:2023-12-04 23:43:02 28 4
mua khóa gpt4 Nike

要创建时间序列的 SAX 表示,您首先需要计算数据的 PAA(分段聚合近似),然后将答案映射到符号表。但是,在计算 PAA 之前,您需要对数据进行标准化。

我正在对数据进行标准化,但我不知道之后如何计算 PAA。任何解决方案?

1 Câu trả lời

我将使用此 Keogh's paper 中的 PAA 示例并说明使用 R 使用分段聚合近似将由 8 个点组成的时间序列转换为 2 个点。

所以,这是数据,我突出显示了四个第一个和四个最后一个点(两个部分),它们的值将被聚合成一个代表“部分”的单个值:

// data
X = c(-1, -2, -1, 0, 2, 1, 1, 0)

// let's plot it
plot(X,type="l",lty=2,main="PAA example")
points(X[1:4],pch=16,lwd=5)
points(y=X[5:8],x=c(5:8),pch=17,lwd=5)
abline(v=c(1,4,5,8),lty=3,lwd=2)

nhập mô tả hình ảnh ở đây

现在,按照 PAA 程序,我们计算每个四点长度段的平均值(即将四个点的值聚合为一个点):
// compute the PAA value for the first segment
p1=mean(X[1:4])

segments(1,p1,4,p1,lwd=2,col="blue2",lty=3)
points(x=2.5,y=p1,col="blue2",pch=23,lwd=20)

// compute the PAAvalue for the second segment
p2=sum(X[5:8])/4

segments(5,p2,8,p2,lwd=2,col="darkorchid2",lty=3)
points(x=6.5,y=p2,col="darkorchid2",pch=23,lwd=20)

这里我们在图中显示了这两个 PAA 值:

nhập mô tả hình ảnh ở đây

现在让我们将相同的八点长度时间序列转换为三个 PAA 点。但在这里我们遇到了一个问题,当 8/3 不产生整数时,我们需要将“属于”的一小部分添加到这些段的相邻段点值中。在这里,我展示了需要转换为 PAA 值的同一时间序列的三个片段:
plot(X,type="l",lty=2,main="PAA example #2")
points(X,pch=16,lwd=5)
abline(v=c(1,1+7/3,1+7/3*2,8),lty=3,lwd=2)

nhập mô tả hình ảnh ở đây

为了执行转换,我定义了一个函数,该函数首先将原始时间序列“分解”为一个矩阵,其行数等于 PAA 大小,列数等于原始时间序列长度,其行值为输入时间序列值。其次,我将该矩阵“ reshape ”为列数等于 PAA 大小且行数等于输入时间序列长度的矩阵。最后,为了获得 PAA 值,我计算了矩阵列的均值。

请注意,我使用了 matlab用于 reshape 表示输入时间序列的矩阵的库:
library(matlab)
paa <- function(ts, npoints){
len <- length(ts)
if(len != npoints){
if( (len %% npoints) == 0 ){
res <- reshape(ts, len %/% npoints, npoints)
}khác{
tmp <- matrix(rep(ts, npoints), byrow = T,nrow = npoints)
res <- reshape(tmp, len, npoints)
}

matrix(colMeans(res), nrow=1, ncol=npoints)

} khác {
ts
}
}

让我们在图中查看这些 PAA 值:
p3=paa(t(X),3)
segments(1,p3[1],1+7/3,p3[1],lwd=2,col="red")
points(x=1+7/3/2,y=p3[1],col="red",pch=23,lwd=20)
segments(1+7/3,p3[2],1+7/3*2,p3[2],lwd=2,col="red")
points(x=1+7/3+7/3/2,y=p3[2],col="red",pch=23,lwd=20)
segments(1+7/3*2,p3[3],8,p3[3],lwd=2,col="red")
points(x=1+7/3*2+7/3/2,y=p3[3],col="red",pch=23,lwd=20)

nhập mô tả hình ảnh ở đây

对于生产,我已经使用 Java 中的 Symbolic Aggregate approXimation (SAX) 通过滑动窗口实现了时间序列的离散化。这是我的 thư viện它实现了 SAX 变换及其并行化版本。

具体来说,分段聚合近似 (PAA) 在 this class 中实现

Cảm ơn!

关于sql - 时间序列的 SAX 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29386357/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com