آنچه در این مقاله می‌خوانید [پنهان‌سازی]

ساخت دیتاست سری زمانی همیشه از پیچیده‌ترین و زمانبرترین مراحل در پروژه‌های یادگیری ماشین بوده است و بسیاری از توسعه دهندگان پیش از شروع مدل سازی باید ساعت‌های زیادی را صرف آماده سازی داده کنند. چالش‌هایی مانند ساخت پنجره‌های زمانی، نرمال سازی صحیح، انتخاب ستون هدف، مدیریت داده‌های چندمتغیره و تقسیم بندی زمانی باعث می‌شود فرآیند ساخت دیتاست سری زمانی دشوار شود. کتابخانه Time Series Dataset Creator یا TSDC با هدف برطرف کردن این پیچیدگی‌ها طراحی شده و به کاربران کمک می‌کند تنها با چند خط کد داده‌های خام را به ورودی‌هایی استاندارد برای مدل‌های LSTM، GRU و Transformer تبدیل کنند. این ابزار مجموعه‌ای گسترده از قابلیت‌ها را در اختیار کاربران قرار می‌دهد که باعث افزایش سرعت توسعه، کاهش خطای انسانی و استانداردسازی کامل فرآیند ساخت دیتاست می‌شود.

معرفی کتابخانه Time Series Dataset Creator

این کتابخانه یک ابزار قدرتمند برای ساخت دنباله‌های زمانی جهت استفاده در مدل‌های یادگیری عمیق است. تمام مراحل مهم مانند ساخت پنجره‌های زمانی، نرمال سازی، مدیریت داده‌های گم شده، حذف مقادیر پرت، تقسیم بندی زمانی و بازگردانی مقیاس خروجی مدل توسط این ابزار انجام می‌شود. کاربران می‌توانند داده‌های تک متغیره، چندمتغیره و مالی را وارد این سیستم کرده و خروجی‌های مناسب برای شبکه‌های عصبی دریافت کنند. ساختار این کتابخانه به صورت ماژولار طراحی شده و شامل کلاس‌های اصلی برای ایجاد دیتاست، پری پردازسینگ، ساخت دنباله و لودر مالی است.

ویژگی‌های کلیدی Time Series Dataset Creator

ساخت سریع دنباله‌های زمانی

این کتابخانه امکان ساخت دنباله‌های زمانی را با چند خط کد فراهم می‌کند و کاربران می توانند از پنجره‌های ثابت، پویا یا سفارشی استفاده کنند. این قابلیت برای مدل‌های LSTM و GRU بسیار ضروری است و فرآیند ساخت دیتاست را سریع‌تر می‌کند.

نرمال سازی و پیش پردازش داخلی

کتابخانه از چندین روش نرمال سازی مانند MinMax، Standard و Robust پشتیبانی می‌کند و فرآیند مقیاس دهی را برای تمام ویژگی‌ها به صورت یکپارچه انجام می‌دهد. این ویژگی باعث می‌شود ورودی‌های مدل استاندارد و قابل اعتماد باشند.

تقسیم بندی کاملا زمانی

یکی از ویژگی‌های مهم این کتابخانه، تقسیم داده بر اساس زمان است که از نشت داده جلوگیری می‌کند. داده‌ها به ترتیب زمانی به سه بخش آموزش، اعتبارسنجی و تست تقسیم می‌شوند و از جابه جایی تصادفی در داده جلوگیری می‌شود.

پشتیبانی از داده‌های تک متغیره و چندمتغیره

کاربران می‌توانند داده‌های شامل ده ها ویژگی مختلف را وارد کنند و تنها یک ستون هدف را برای خروجی مدل انتخاب کنند. این قابلیت در پروژه‌های مالی، صنعتی و هواشناسی اهمیت زیادی دارد.

مدیریت داده‌های گم شده و مقادیر پرت

یکی از مشکلات رایج در پروژه‌های واقعی، وجود داده‌های ناقص یا غیرعادی است. این کتابخانه ابزارهایی برای پرکردن داده‌های گم شده، حذف مقادیر پرت و استانداردسازی داده‌ها ارائه می‌دهد.

عملیات sliding window انعطاف پذیر

امکان تعریف stride، lookback و horizon به کاربر اجازه می‌دهد الگوهای مختلف زمان را برای مدل تنظیم کند.

پشتیبانی از داده‌های مالی و اندیکاتورهای تکنیکال

وجود FinancialLoader امکان بارگذاری داده‌های مالی از Yahoo Finance و افزودن اندیکاتورهایی مانند MA، EMA، RSI و MACD را فراهم می‌کند.

پشتیبانی از Walk Forward و Expanding Window

برای ارزیابی دقیق مدل‌های پیش بینی، این کتابخانه از معتبرترین روش های اعتبارسنجی زمانی پشتیبانی می کند تا عملکرد مدل در شرایط واقعی بررسی شود.

امکان بازگردانی مقیاس خروجی مدل

قابلیت inverse transform این امکان را می‌دهد خروجی مدل به مقیاس اصلی بازگردانده شود و برای تحلیل دقیق عملکرد مدل مورد استفاده قرار گیرد.

نصب و راه اندازی

نصب از سورس

برای توسعه دهندگان، نصب از سورس بهترین روش است:

git clone https://github.com/DeepPythonist/tsdc.git
cd tsdc
pip install -e .

برای امکانات اضافی مانند لودر مالی:

pip install -e ".[examples]"

شروع سریع با مثال‌های کاربردی

مثال تک متغیره: پیش بینی قیمت بیت کوین

import numpy as np
from tsdc import TimeSeriesDataset

bitcoin_prices = np.random.randn(1000) * 1000 + 40000

dataset = TimeSeriesDataset(
    data=bitcoin_prices,
    lookback=60,
    horizon=1
)
dataset.prepare()

X_train, y_train = dataset.get_train()
X_val, y_val = dataset.get_val()
X_test, y_test = dataset.get_test()

print(X_train.shape)
print(y_train.shape)

مثال داده چندمتغیره با ستون هدف

import pandas as pd
from tsdc import TimeSeriesDataset

data = pd.DataFrame({
    'temperature': [...],
    'humidity': [...],
    'pressure': [...]
})

dataset = TimeSeriesDataset(
    data=data,
    lookback=24,
    horizon=6,
    target_column='temperature',
    scaler_type='minmax'
)
dataset.prepare()
X_train, y_train = dataset.get_train()

مفاهیم اصلی در ساخت دنباله‌های زمانی

Lookback و Horizon

Lookback تعداد نقاط گذشته است و Horizon تعداد نقاطی است که باید پیش بینی شوند.

lookback=60, horizon=1
lookback=24, horizon=12

Stride

Stride تعیین می کند پنجره ها چه میزان همپوشانی داشته باشند.

stride=1
stride=5

تقسیم بندی زمانی

TimeSeriesDataset(
    data=data,
    train_split=0.7,
    val_split=0.15,
    test_split=0.15
)

گزینه‌های مقیاس دهی

minmax
standard
robust
none

API های اصلی

کلاس TimeSeriesDataset

وظیفه ایجاد دیتاست کامل را بر عهده دارد.
متدهای مهم: prepare، get_train، get_val، get_test، get_all، get_info، inverse_transform_predictions

Sequencer

ساخت پنجره های زمانی با کنترل کامل lookback، horizon و stride را انجام می دهد.

Preprocessor

پشتیبانی از:

  • حذف Outlier
  • مقیاس دهی
  • مدیریت داده های گم شده
  • inverse transform

FinancialLoader

بارگذاری داده های مالی:

from tsdc.loaders import FinancialLoader

loader = FinancialLoader()
btc = loader.load("BTC-USD", "2023-01-01", "2024-01-01")
btc = loader.add_technical_indicators(sma_periods=[20,50], ema_periods=[12,26], rsi_period=14, macd=True)

مثال‌های پیشرفته

مثال ۱: پیش بینی قیمت بیت کوین با LSTM

from tsdc import TimeSeriesDataset
from tsdc.loaders import FinancialLoader
import numpy as np

loader = FinancialLoader()
btc = loader.load("BTC-USD", "2022-01-01")

dataset = TimeSeriesDataset(
    data=btc[['Close','Volume']],
    lookback=60,
    horizon=1,
    target_column='Close',
    scaler_type='minmax'
)
dataset.prepare()
X_train, y_train = dataset.get_train()

مثال ۲: Walk Forward Validation

from tsdc.utils.splitters import walk_forward_validation

for X_train, y_train, X_test, y_test in walk_forward_validation(X, y, n_splits=5):
    model.fit(X_train, y_train)

مثال ۳: بارگذاری از CSV

dataset = TimeSeriesDataset("data.csv", lookback=30, horizon=7, target_column="sales")
dataset.prepare()

مثال ۴: پیش پردازش سفارشی

from tsdc import Preprocessor

prep = Preprocessor(
    scaler_type='robust',
    handle_missing='interpolate',
    remove_outliers=True,
    outlier_threshold=2.5
)
cleaned = prep.fit_transform(raw_data)

جمع بندی

کتابخانه Time Series Dataset Creator یک ابزار حرفه‌ای، ساده و کاملا استاندارد برای ساخت دیتاست سری زمانی است و بسیاری از مراحل پیچیده آماده سازی داده را خودکار می‌کند. پشتیبانی از داده‌های چندمتغیره، لودرهای مالی، اندیکاتورهای تکنیکال، نرمال سازی پیشرفته، تقسیم بندی زمانی صحیح و روش های معتبر ارزیابی باعث شده این ابزار یکی از بهترین انتخاب‌ها برای پروژه‌های یادگیری عمیق باشد. این کتابخانه مناسب تحلیلگران داده، پژوهشگران، معامله گران و برنامه نویسانی است که می‌خواهند بدون پیچیدگی به ساخت دیتاست سری زمانی استاندارد بپردازند.