Membuat fitur dari waktu ke waktu

Machine Learning untuk Data Deret Waktu di Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Mengekstrak fitur dengan jendela

Machine Learning untuk Data Deret Waktu di Python

Menggunakan .aggregate untuk ekstraksi fitur

# Visualisasikan data mentah
print(prices.head(3))
symbol            AIG        ABT
date                            
2010-01-04  29.889999  54.459951
2010-01-05  29.330000  54.019953
2010-01-06  29.139999  54.319953
# Hitung rolling window, lalu ekstrak dua fitur
feats = prices.rolling(20).aggregate([np.std, np.max]).dropna()
print(feats.head(3))
                 AIG                  ABT           
                 std       amax       std       amax
date                                                
2010-02-01  2.051966  29.889999  0.868830  56.239949
2010-02-02  2.101032  29.629999  0.869197  56.239949
2010-02-03  2.157249  29.629999  0.852509  56.239949
Machine Learning untuk Data Deret Waktu di Python

Periksa sifat fitur Anda!

Machine Learning untuk Data Deret Waktu di Python

Menggunakan partial() di Python

# Jika kita hanya mengambil mean, hasilnya satu nilai
a = np.array([[0, 1, 2], [0, 1, 2], [0, 1, 2]])
print(np.mean(a))
1.0
# Kita dapat memakai partial function untuk menginisialisasi np.mean 
# dengan parameter axis
from functools import partial
mean_over_first_axis = partial(np.mean, axis=0)

print(mean_over_first_axis(a))
[0. 1. 2.]
Machine Learning untuk Data Deret Waktu di Python

Persentil merangkum data Anda

  • Persentil berguna untuk ringkasan data yang lebih rinci (dibandingkan menggunakan np.mean).
  • Untuk suatu himpunan data, persentil ke-N adalah nilai di mana N% data berada di bawah titik data tersebut, dan 100−N% di atasnya.
print(np.percentile(np.linspace(0, 200), q=20))
40.0
Machine Learning untuk Data Deret Waktu di Python

Menggabungkan np.percentile() dengan partial function untuk menghitung rentang persentil

data = np.linspace(0, 100)

# Buat daftar fungsi dengan list comprehension
percentile_funcs = [partial(np.percentile, q=ii) for ii in [20, 40, 60]]

# Hitung keluaran tiap fungsi dengan cara yang sama
percentiles = [i_func(data) for i_func in percentile_funcs]
print(percentiles)
[20.0, 40.00000000000001, 60.0]
# Hitung banyak persentil dari rolling window
data.rolling(20).aggregate(percentiles)
Machine Learning untuk Data Deret Waktu di Python

Menghitung fitur berbasis tanggal

  • Sejauh ini kita fokus pada perhitungan fitur "statistik"—fitur yang merepresentasikan sifat statistik data, seperti "mean", "standard deviation", dll.
  • Namun, ingat bahwa data runtun waktu sering memiliki fitur yang lebih "manusiawi", seperti hari dalam minggu, hari libur, dll.
  • Fitur-fitur ini sering berguna untuk runtun waktu lintas tahun (misalnya nilai saham dari waktu ke waktu).
Machine Learning untuk Data Deret Waktu di Python

Fitur datetime dengan Pandas

# Pastikan indeks bertipe datetime
prices.index = pd.to_datetime(prices.index)

# Ekstrak fitur datetime
day_of_week_num = prices.index.weekday
print(day_of_week_num[:10])
Index([0 1 2 3 4 0 1 2 3 4], dtype='object')
day_of_week = prices.index.day_name()
print(day_of_week[:10])
Index(['Monday' 'Tuesday' 'Wednesday' 'Thursday' 'Friday' 'Monday' 'Tuesday'
 'Wednesday' 'Thursday' 'Friday'], dtype='object')
Machine Learning untuk Data Deret Waktu di Python

Ayo berlatih!

Machine Learning untuk Data Deret Waktu di Python

Preparing Video For Download...