Phần 14: Analyzing Time Series Data phần 2 – Lập trình AI bằng Python

Phần 14: Analyzing Time Series Data phần 2                        – Lập trình AI bằng Python

5. Trích xuất thống kê từ Time Series Data :

a. Trung bình :
Sử dụng hàm imply() :
timeseries.imply()
Kết quả như dưới đây :
-0.11143128165238671
b. Maximum :
Sử dụng hàm max :
timeseries.max()
Kết quả :
3.4952999999999999
c. Minimum :
Sử dụng hàm min():
timeseries.min()
Kết quả :
-4.2656999999999998
d. Tổng hợp :
Nếu như bạn cần tính toán toàn bộ các thống kê cùng 1 lúc, sử dụng hàm describe()
timeseries.describe()
Kết quả như dưới đây :
depend   817.000000
imply     -0.111431
std       1.003151
min      -4.265700
25%      -0.649430
50%      -0.042744
75%       0.475720
max       3.495300
dtype: float64
e. Re-sampling :
Bạn sẽ có thể lấy mẫu lại dữ liệu theo 1 tần suất thời gian khác. Hai tham số để thực hiện lấy mẫu lại là
  • Time interval
  • Method
f. Re-sampling với imply()
Sử dụng hàm imply() để resample dữ liệu :
timeseries_mm = timeseries.resample("A").imply()
timeseries_mm.plot(fashion = 'g--')
plt.present()
Sau đó, bạn sẽ có thể quan sát biểu đồ sau là đầu ra của việc lấy mẫu lại bằng cách sử dụng imply ()
g. Re-sampling với median()
timeseries_mm = timeseries.resample("A").median()
timeseries_mm.plot()
plt.present()
quan sát biểu đồ output :
i. Rolling Mean
timeseries.rolling(window = 12, middle = False).imply().plot(fashion = '-g')
plt.present()

6. Phân tích dữ liệu tuần tự bằng mô hình Markov ẩn (HMM)

HMM là 1 mô hình thống kê được dùng rộng rãi cho dữ liệu rằng có tính liên tiếp và khả năng mở rộng như phân tích thị trường chứng khoán theo chuỗi thời gian, kiểm tra sức khỏe và nhận dạng giọng nói. Phần này nhắc đến chi tiết tới việc phân tích dữ liệu tuần tự bằng Mô hình Markov ẩn (HMM).
a. Hidden Markov Model (HMM)
HMM là 1 mô hình ngẫu nhiên được xây dựng dựa vào khái niệm chuỗi Markov dựa vào giả định rằng xác suất của các thống kê trong tương lai chỉ dựa vào trạng thái quy trình hiện giờ thay vì bất kỳ trạng thái nào trước đây. Ví dụ, khi tung 1 đồng xu, ta không thể nói rằng kết quả của lần tung thứ năm sẽ là mặt sấp. Điều đó là bởi 1 đồng xu không có bất kỳ bộ nhớ nào và kết quả tiếp theo không dựa vào kết quả trước đây.
Về toán học, HMM gồm các biến sau:
States(S) :
Là 1 tập hợp các trạng thái ẩn hay tiềm ẩn trong HMM. Nó được ký hiệu là S.
Output symbols (O) :
Là 1 tập hợp các ký hiệu đầu ra có thể có trong HMM. Nó được ký hiệu là O.
Ma trận xác suất chuyển trạng thái (A) :
Nó là xác suất thực hiện chuyển đổi từ trạng thái này sang từng trạng thái khác. Nó được ký hiệu là A.
Ma trận xác suất phát thải quan sát (B) :
Là xác suất emitting/observing 1 kí hiệu ở 1 trạng thái chi tiết. Nó được ký hiệu là B.

7. Ví dụ :

Trong ví dụ này, ta sẽ phân tích từng bước dữ liệu của thị trường chứng khoán, để có ý tưởng về cách HMM hoạt động với dữ liệu tuần tự hay chuỗi thời gian. Xin chú ý rằng chúng tôi đang triển khai ví dụ này bằng Python.
Sử dụng package deal matpotlib.finance :
import numpy as np
from matplotlib import cm, pyplot as plt
from matplotlib.dates import YearLocator, MonthLocator
strive:
   from matplotlib.finance import quotes_historical_yahoo_och1
besides ImportError:
   from matplotlib.finance import (
      quotes_historical_yahoo as quotes_historical_yahoo_och1)

from hmmlearn.hmm import GaussianHMM
Load dữ liệu từ begin date và finish date :
start_date = datetime.date(1995, 10, 10)
end_date = datetime.date(2015, 4, 25)
quotes = quotes_historical_yahoo_och1('INTC', start_date, end_date)
Trong bước này, ta sẽ trích xuất các báo giá kết thúc hàng ngày. Đối với điều đó, hãy sử dụng lệnh sau:
closing_quotes = np.array([quote[2] for quote in quotes])
Hiện tại, tôi sẽ trích xuất khối lượng cổ phiếu được giao dịch hàng ngày. Đối với điều đó, hãy sử dụng lệnh sau:
volumes = np.array([quote[5] for quote in quotes])[1:]
Ở đây, lấy phần trăm chênh lệch của giá cổ phiếu đóng cửa, sử dụng đoạn mã sau :
diff_percentages = 100.0 * np.diff(closing_quotes) / closing_quotes[:-]
dates = np.array([quote[0] for quote in quotes], dtype = np.int)[1:]
training_data = np.column_stack((*2*))
Khởi tạo và huấn luyện Gaussian HMM
hmm = GaussianHMM(n_components = 7, covariance_type = 'diag', n_iter = 1000)
with warnings.catch_warnings():
   warnings.simplefilter('ignore')
   hmm.match(training_data)
Tạo dữ liệu sử dụng mô hình HMM, sử dụng đoạn lệnh sau :
num_samples = 300
samples, _ = hmm.pattern(num_samples)
Cuối cùng, trong bước này,mình vẽ và hình dung phần trăm chênh lệch và khối lượng cổ phiếu được giao dịch dưới dạng sản lượng dưới dạng đồ thị.
Sử dụng đoạn mã sau để vẽ và hình dung tỷ lệ phần trăm chênh lệch
plt.determine()
plt.title('Difference percentages')
plt.plot(np.arange(num_samples), samples[:, 0], c = 'black')
Vẽ và hiển thị giá cổ phiếu
plt.determine()
plt.title('Volume of shares')
plt.plot(np.arange(num_samples), samples[:, 1], c = 'black')
plt.ylim(ymin = 0)
plt.present()

admin

Leave a Reply

Your email address will not be published. Required fields are marked *