Kết hợp dữ liệu chuỗi thời gian với Machine Learning

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Làm quen với dữ liệu

  • Các bộ dữ liệu dùng trong khóa học này đều miễn phí và có sẵn online
  • Có nhiều bộ dữ liệu để tải trên web; bộ bạn dùng ở đây đến từ Kaggle
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Dữ liệu âm học nhịp tim

  • Nhiều bản ghi âm tiếng tim từ các bệnh nhân khác nhau
  • Một số tim hoạt động bình thường, số khác có bất thường
  • Dữ liệu là tệp âm thanh + nhãn cho mỗi tệp
  • Liệu ta có tìm được nhịp tim "bất thường"?
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Nạp dữ liệu âm thanh

from glob import glob
files = glob('data/heartbeat-sounds/files/*.wav')

print(files)
['data/heartbeat-sounds/proc/files/murmur__201101051104.wav',
 ...
 'data/heartbeat-sounds/proc/files/murmur__201101051114.wav']
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Đọc dữ liệu âm thanh

import librosa as lr
# `load` accepts a path to an audio file
audio, sfreq = lr.load('data/heartbeat-sounds/proc/files/murmur__201101051104.wav')

print(sfreq)
2205

Trong trường hợp này, tần số lấy mẫu là 2205, tức có 2205 mẫu mỗi giây

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Suy ra thời gian từ mẫu

  • Nếu biết tốc độ lấy mẫu của chuỗi thời gian, bạn có thể suy ra mốc thời gian của từng điểm dữ liệu so với điểm đầu tiên
  • Lưu ý: giả định tốc độ lấy mẫu cố định và không mất điểm dữ liệu
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Tạo mảng thời gian (I)

  • Tạo một mảng chỉ số, mỗi mẫu một chỉ số, rồi chia cho tần số lấy mẫu

      indices = np.arange(0, len(audio))
      time = indices / sfreq
    
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Tạo mảng thời gian (II)

  • Tìm mốc thời gian của điểm dữ liệu thứ N-1. Sau đó dùng linspace() để nội suy từ 0 đến thời điểm đó

      final_time = (len(audio) - 1) / sfreq
      time = np.linspace(0, final_time, sfreq)
    
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Bộ dữ liệu Sàn giao dịch chứng khoán New York

  • Bộ dữ liệu này gồm giá cổ phiếu của các công ty trong 10 năm
  • Ta có thể phát hiện mẫu hình trong lịch sử để dự đoán giá trị công ty trong tương lai không?
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Khám phá dữ liệu

data = pd.read_csv('path/to/data.csv')

data.columns
Index(['date', 'symbol', 'close', 'volume'], dtype='object')
data.head()
         date symbol       close       volume
0  2010-01-04   AAPL  214.009998  123432400.0
1  2010-01-04    ABT   54.459951   10829000.0
2  2010-01-04    AIG   29.889999    7750900.0
3  2010-01-04   AMAT   14.300000   18615100.0
4  2010-01-04   ARNC   16.650013   11512100.0
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Chuỗi thời gian với Pandas DataFrame

  • Bạn có thể kiểm tra kiểu đối tượng của từng cột bằng thuộc tính dtypes
df['date'].dtypes
0    object
1    object
2    object
dtype: object
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Chuyển một cột thành chuỗi thời gian

  • Để đảm bảo một cột trong DataFrame được xử lý như chuỗi thời gian, dùng hàm to_datetime()
df['date'] = pd.to_datetime(df['date'])

df['date']
0   2017-01-01
1   2017-01-02
2   2017-01-03
Name: date, dtype: datetime64[ns]
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Cùng luyện tập nào!

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Preparing Video For Download...