Chúng tôi biết rằng các tài liệu nói chung được nhóm thành các chủ đề. Đôi khi chúng ta cần xác định các mẫu trong văn bản tương ứng với một chủ đề cụ thể. Kỹ thuật làm điều này được gọi là mô hình hóa chủ đề. Nói cách khác, chúng ta có thể nói rằng mô hình hóa chủ đề là một kỹ thuật để khám phá các chủ đề trừu tượng hoặc cấu trúc ẩn trong một bộ tài liệu nhất định.
Chúng ta có thể sử dụng kỹ thuật lập mô hình chủ đề trong các trường hợp sau –
Phân loại văn bản
Với sự trợ giúp của mô hình chủ đề, việc phân loại có thể được cải thiện vì nó nhóm các từ tương tự lại với nhau thay vì sử dụng từng từ riêng biệt làm đặc điểm.
Hệ thống đề xuất
Với sự trợ giúp của mô hình chủ đề, chúng ta có thể xây dựng các hệ thống đề xuất bằng cách sử dụng các biện pháp tương tự.
Các thuật toán cho mô hình chủ đề
Mô hình hóa chủ đề có thể được thực hiện bằng cách sử dụng các thuật toán. Các thuật toán như sau –
Phân bổ Dirichlet tiềm ẩn (LDA)
Thuật toán này là phổ biến nhất cho mô hình chủ đề. Nó sử dụng các mô hình đồ họa xác suất để triển khai mô hình chủ đề. Chúng ta cần nhập gói gensim bằng Python để sử dụng LDA slgorithm.
Phân tích ngữ nghĩa tiềm ẩn (LDA) hoặc Lập chỉ mục ngữ nghĩa tiềm ẩn (LSI)
Thuật toán này dựa trên Đại số tuyến tính. Về cơ bản, nó sử dụng khái niệm SVD (Phân tách giá trị số ít) trên ma trận thuật ngữ tài liệu.
Thừa số ma trận không âm (NMF)
Nó cũng dựa trên Đại số tuyến tính.
Tất cả các thuật toán được đề cập ở trên để lập mô hình chủ đề sẽ có số lượng chủ đề làm tham số, Ma trận tài liệu- từ làm đầu vào và WTM (Ma trận chủ đề từ) & TDM (Ma trận tài liệu chủ đề) làm đầu ra.
AI với Python – Phân tích dữ liệu chuỗi thời gian
Dự đoán tiếp theo trong một chuỗi đầu vào nhất định là một khái niệm quan trọng khác trong học máy. Chương này cung cấp cho bạn giải thích chi tiết về phân tích dữ liệu chuỗi thời gian.
Giới thiệu
Dữ liệu chuỗi thời gian có nghĩa là dữ liệu nằm trong một chuỗi các khoảng thời gian cụ thể. Nếu chúng ta muốn xây dựng dự đoán trình tự trong học máy, thì chúng ta phải xử lý dữ liệu tuần tự và thời gian. Dữ liệu chuỗi là một bản tóm tắt của dữ liệu tuần tự. Thứ tự dữ liệu là một tính năng quan trọng của dữ liệu tuần tự.
Khái niệm cơ bản về phân tích trình tự hoặc phân tích chuỗi thời gian
Phân tích trình tự hoặc phân tích chuỗi thời gian là dự đoán phần tiếp theo trong một chuỗi đầu vào nhất định dựa trên dữ liệu được quan sát trước đó. Dự đoán có thể là bất cứ thứ gì có thể xảy ra tiếp theo: biểu tượng, số, thời tiết ngày hôm sau, thuật ngữ tiếp theo trong bài phát biểu, v.v. Phân tích trình tự có thể rất hữu ích trong các ứng dụng như phân tích thị trường chứng khoán, dự báo thời tiết và đề xuất sản phẩm.
Ví dụ Xem xét ví dụ sau để hiểu dự đoán trình tự. Ở đây A, B, C, D là các giá trị đã cho và bạn phải dự đoán giá trị E bằng Mô hình dự đoán trình tự.
Cài đặt các gói hữu ích
Để phân tích dữ liệu chuỗi thời gian bằng Python, chúng ta cần cài đặt các gói sau –
gấu trúc
Pandas là một thư viện mã nguồn mở được BSD cấp phép cung cấp các công cụ phân tích dữ liệu và cấu trúc dữ liệu hiệu suất cao, dễ sử dụng cho Python. Bạn có thể cài đặt Pandas với sự trợ giúp của lệnh sau
pip install pandas
Nếu bạn đang sử dụng Anaconda và muốn cài đặt bằng cách sử dụng trình quản lý gói conda , thì bạn có thể sử dụng lệnh sau –
conda install -c anaconda pandas
hmmhọc
Nó là một thư viện mã nguồn mở được BSD cấp phép bao gồm các thuật toán và mô hình đơn giản để tìm hiểu các Mô hình Markov ẩn (HMM) trong Python. Bạn có thể cài đặt nó với sự trợ giúp của lệnh sau –
pip install hmmlearn
Nếu bạn đang sử dụng Anaconda và muốn cài đặt bằng cách sử dụng trình quản lý gói conda , thì bạn có thể sử dụng lệnh sau –
conda install -c omnia hmmlearn
PyStruct
Nó là một thư viện học tập và dự đoán có cấu trúc. Các thuật toán học được triển khai trong PyStruct có các tên như trường ngẫu nhiên có điều kiện (CRF), Mạng ngẫu nhiên Markov có lợi nhuận tối đa (M3N) hoặc máy vectơ hỗ trợ cấu trúc. Bạn có thể cài đặt nó với sự trợ giúp của lệnh sau –
pip install pystruct
CVXOPT
Nó được sử dụng để tối ưu hóa lồi dựa trên ngôn ngữ lập trình Python. Nó cũng là một gói phần mềm miễn phí. Bạn có thể cài đặt nó với sự trợ giúp của lệnh sau –
pip install cvxopt
Nếu bạn đang sử dụng Anaconda và muốn cài đặt bằng cách sử dụng trình quản lý gói conda , thì bạn có thể sử dụng lệnh sau –
conda install -c anaconda cvdoxt
Pandas: Xử lý, cắt và trích xuất thống kê từ dữ liệu chuỗi thời gian
Pandas là một công cụ rất hữu ích nếu bạn phải làm việc với dữ liệu chuỗi thời gian. Với sự trợ giúp của Pandas, bạn có thể thực hiện các thao tác sau –
- Tạo phạm vi ngày bằng cách sử dụng gói pd.date_range
- Lập chỉ mục gấu trúc với ngày tháng bằng cách sử dụng gói pd.Series
- Thực hiện lấy mẫu lại bằng cách sử dụng gói ts.resample
- Thay đổi tần số
Ví dụ
Ví dụ sau đây cho thấy bạn xử lý và cắt dữ liệu chuỗi thời gian bằng cách sử dụng Pandas. Lưu ý rằng ở đây chúng tôi đang sử dụng dữ liệu Dao động Bắc cực hàng tháng, dữ liệu này có thể được tải xuống từ (https:// months.ao.index.b50.current.ascii) và có thể được chuyển đổi sang định dạng văn bản để chúng tôi sử dụng.
Xử lý dữ liệu chuỗi thời gian
Để xử lý dữ liệu chuỗi thời gian, bạn sẽ phải thực hiện các bước sau – Bước đầu tiên liên quan đến việc nhập các gói sau
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Tiếp theo, xác định một hàm sẽ đọc dữ liệu từ tệp đầu vào, như được hiển thị trong đoạn mã dưới đây
def read_data(input_file):
input_data = np.loadtxt(input_file, delimiter = None)
Bây giờ, hãy chuyển đổi dữ liệu này thành chuỗi thời gian. Đối với điều này, hãy tạo phạm vi ngày của chuỗi thời gian của chúng tôi. Trong ví dụ này, chúng tôi giữ một tháng làm tần suất dữ liệu. Tệp của chúng tôi có dữ liệu bắt đầu từ tháng 1 năm 1950.
dates = pd.date_range('1950-01', periods = input_data.shape[0], freq = 'M')
Trong bước này, chúng tôi tạo dữ liệu chuỗi thời gian với sự trợ giúp của Pandas Series, như được hiển thị bên dưới
output = pd.Series(input_data[:, index], index = dates)
return output
if __name__=='__main__':
Nhập đường dẫn của tệp đầu vào như được hiển thị ở đây
input_file = "/Users/admin/AO.txt"
Bây giờ, chuyển đổi cột thành định dạng chuỗi thời gian, như được hiển thị ở đây –
timeseries = read_data(input_file)
Cuối cùng, vẽ đồ thị và trực quan hóa dữ liệu, sử dụng các lệnh được hiển thị
plt.figure()
timeseries.plot()
plt.show()
Bạn sẽ quan sát các biểu đồ như trong các hình ảnh sau
Cắt dữ liệu chuỗi thời gian
Cắt liên quan đến việc chỉ truy xuất một số phần của dữ liệu chuỗi thời gian. Là một phần của ví dụ, chúng tôi chỉ cắt dữ liệu từ năm 1980 đến năm 1990. Quan sát đoạn mã sau thực hiện tác vụ này
timeseries['1980':'1990'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0xa0e4b00>
plt.show()
Khi bạn chạy mã để cắt dữ liệu chuỗi thời gian, bạn có thể quan sát biểu đồ sau như minh họa trong hình ở đây
Trích xuất thống kê từ dữ liệu chuỗi thời gian
Bạn sẽ phải trích xuất một số thống kê từ một dữ liệu nhất định, trong trường hợp bạn cần rút ra một số kết luận quan trọng. Giá trị trung bình, phương sai, tương quan, giá trị tối đa và giá trị tối thiểu là một số thống kê như vậy. Bạn có thể sử dụng đoạn mã sau nếu muốn trích xuất số liệu thống kê đó từ dữ liệu chuỗi thời gian nhất định –
Nghĩa là
Bạn có thể sử dụng hàm mean() để tìm giá trị trung bình, như được hiển thị ở đây
timeseries.mean()
Sau đó, đầu ra mà bạn sẽ quan sát cho ví dụ được thảo luận là –
-0.11143128165238671
tối đa
Bạn có thể sử dụng hàm max() để tìm giá trị lớn nhất, như được hiển thị ở đây –
timeseries.max()
Sau đó, đầu ra mà bạn sẽ quan sát cho ví dụ được thảo luận là –
3.4952999999999999
tối thiểu
Bạn có thể sử dụng hàm min() để tìm giá trị nhỏ nhất, như minh họa ở đây –
timeseries.min()
Sau đó, đầu ra mà bạn sẽ quan sát cho ví dụ được thảo luận là –
-4.2656999999999998
Nhận mọi thứ cùng một lúc
Nếu bạn muốn tính toán tất cả số liệu thống kê tại một thời điểm, bạn có thể sử dụng hàm description() như được hiển thị ở đây –
timeseries.describe()
Sau đó, đầu ra mà bạn sẽ quan sát cho ví dụ được thảo luận là
count 817.000000
mean -0.111431
std 1.003151
min -4.265700
25% -0.649430
50% -0.042744
75% 0.475720
max 3.495300
dtype: float64
lấy mẫu lại
Bạn có thể lấy mẫu lại dữ liệu theo tần suất thời gian khác. Hai tham số để thực hiện lấy mẫu lại là –
- khoảng thời gian
- Phương pháp
Lấy mẫu lại với mean()
Bạn có thể sử dụng đoạn mã sau để lấy mẫu lại dữ liệu bằng phương thức mean(), đây là phương thức mặc định
timeseries_mm = timeseries.resample("A").mean()
timeseries_mm.plot(style = 'g--')
plt.show()
Sau đó, bạn có thể quan sát biểu đồ sau đây dưới dạng đầu ra của quá trình lấy mẫu lại bằng cách sử dụng mean()
Lấy mẫu lại với median()
Bạn có thể sử dụng đoạn mã sau để lấy mẫu lại dữ liệu bằng phương thức median()
timeseries_mm = timeseries.resample("A").median()
timeseries_mm.plot()
plt.show()
Sau đó, bạn có thể quan sát biểu đồ sau dưới dạng đầu ra của quá trình lấy mẫu lại với median()
trung bình lăn
Bạn có thể sử dụng đoạn mã sau để tính trung bình lăn (di chuyển
timeseries.rolling(window = 12, center = False).mean().plot(style = '-g')
plt.show()
Sau đó, bạn có thể quan sát biểu đồ sau đây là đầu ra của giá trị trung bình lăn (di chuyển)
xem thêm : Phân tích dữ liệu tuần tự bằng mô hình Markov ẩn (HMM)