Hướng dẫn haar wavelet transform python - lông trăn biến hình wavelet

Tôi đang cố gắng áp dụng biến đổi Wavelet Haar cho dữ liệu thị trường chứng khoán để giảm tiếng ồn, trước khi cung cấp dữ liệu cho RNN (LSTM). Vì dữ liệu này là trong 1D, tôi đang sử dụng một DWT cấp độ duy nhất như sau:

import pywt
x = [3, 7, 1, 1, -2, 5, 4, 6, 1,11,34,44,66,888,33,455,10000,33]
cA, cD = pywt.dwt(x, 'haar')

Tôi có những câu hỏi sau:

  1. Sử dụng một DWT cấp duy nhất, chuỗi thời gian của tôi đã giảm xuống một nửa trong CA và CD. Tôi hiểu rằng mỗi yếu tố của CA và CD liên quan đến 2 phần tử trong chuỗi thời gian ban đầu. Đó là tất cả tuyệt vời, nhưng làm thế nào tôi có thể ánh xạ các mảng đầu ra so với loạt ban đầu?
  2. Khi nào chúng ta cần thực hiện phân tách đa cấp? Ngoài ra, khi mức tăng, các mảng đầu ra trở nên nhỏ hơn và vì vậy, một lần nữa, tôi không thể ánh xạ dữ liệu "khử Notised" này so với chuỗi thời gian ban đầu.
  3. Giữa CA và CD, cái nào nên được sử dụng làm đầu ra của biến đổi này để được đưa vào RNN?

Tôi đã đọc rất nhiều bài báo cấp cao về giá trị của các biến đổi wavelet nhưng hầu như không có gì đi qua mã thực tế. Vì vậy, bất kỳ mã ví dụ sẽ được đánh giá cao nhất.

Trân trọng,

Adeel

Pywavelets là phần mềm biến đổi wavelet nguồn mở cho Python. Nó kết hợp một giao diện cấp cao đơn giản với hiệu suất C và Cython thấp.

Pywavelets rất dễ sử dụng và bắt đầu với. Chỉ cần cài đặt gói, mở vỏ tương tác Python và loại:

>>> import pywt
>>> cA, cD = pywt.dwt([1, 2, 3, 4], 'db1')

Voilà! Máy tính biến đổi wavelet chưa bao giờ đơn giản như vậy :)

Dưới đây là một ví dụ liên quan hơn một chút về việc áp dụng biến đổi wavelet kỹ thuật số cho hình ảnh:

import numpy as np
import matplotlib.pyplot as plt

import pywt
import pywt.data


# Load image
original = pywt.data.camera()

# Wavelet transform of image, and plot approximation and details
titles = ['Approximation', ' Horizontal detail',
          'Vertical detail', 'Diagonal detail']
coeffs2 = pywt.dwt2(original, 'bior1.3')
LL, (LH, HL, HH) = coeffs2
fig = plt.figure(figsize=(12, 3))
for i, a in enumerate([LL, LH, HL, HH]):
    ax = fig.add_subplot(1, 4, i + 1)
    ax.imshow(a, interpolation="nearest", cmap=plt.cm.gray)
    ax.set_title(titles[i], fontsize=10)
    ax.set_xticks([])
    ax.set_yticks([])

fig.tight_layout()
plt.show()

Hướng dẫn haar wavelet transform python - lông trăn biến hình wavelet

Những đặc điểm chính¶

Các tính năng chính của pywavelet là:

  • 1D, 2D và ND Chuyển đổi chuyển đổi rời rạc và nghịch đảo (DWT và IDWT)

  • 1D, 2D và ND đa cấp DWT và IDWT

  • Biến đổi wavelet đứng yên 1D, 2D và ND (biến đổi sóng con không quyết định)

  • Phân tách gói và tái thiết gói 1D và 2D

  • Biến đổi sóng con liên tục 1D

  • Tính toán xấp xỉ của wavelet và các chức năng tỷ lệ

  • Hơn 100 bộ lọc wavelet tích hợp và hỗ trợ cho các sóng con tùy chỉnh

  • Tính toán chính xác đơn và kép

  • Tính toán thực và phức tạp

  • Kết quả tương thích với Hộp công cụ Wavelet MATLAB (TM)

Tìm sự giúp đỡ¶

Sử dụng các vấn đề của GitHub, Stackoverflow hoặc nhóm thảo luận pywavelet để đăng bình luận hoặc câu hỏi của bạn.

Giấy phép¶

Pywavelets là một phần mềm nguồn mở miễn phí được phát hành theo giấy phép MIT.

Trích dẫn¶

Nếu bạn sử dụng pywavelet trong một ấn phẩm khoa học, chúng tôi sẽ đánh giá cao các trích dẫn của dự án thông qua ấn phẩm Joss sau:

Gregory R. Lee, Ralf Gommers, Filip Wasilewski, Kai Wohlfahrt, Aaron O hèLeary (2019). Pywavelets: Gói Python để phân tích sóng con. Tạp chí Phần mềm nguồn mở, 4 (36), 1237, https://doi.org/10.21105/joss.01237.

Hướng dẫn haar wavelet transform python - lông trăn biến hình wavelet

Các bản phát hành cụ thể cũng có thể được trích dẫn thông qua Zenodo. DOI dưới đây sẽ tương ứng với bản phát hành gần đây nhất. Dois cho các phiên bản trong quá khứ có thể được tìm thấy bằng cách theo liên kết trong huy hiệu dưới đây với Zenodo:

Nội dung

  • Cài đặt
  • Tham khảo API
  • Ví dụ sử dụng
  • Đóng góp
  • Hướng dẫn phát triển
  • Phát hành ghi chú