Thành viên trong nhóm 11:
- Mai Chí Trung - 20280109
- Mai Chí Thanh - 20280084
- Nguyễn Quốc HUy - 20280045
- Đặng Ngọc Hưng - 20280039
Sử dụng Pandas để nhập dữ liệu, Matplotlib và Seaborn để trực quan hóa dữ liệu, sklearn cho các thuật toán, tran_test_split để chia tập dữ liệu trong tập kiểm tra và traing set, accuracy_score để đánh giá mô hình.
Lấy dữ liệu từ trang: https://www.nasdaq.com/marketactivity/commodities/gc%3Acmx
Bộ dữ liệu này bao gồm giá vàng theo thời gian thực tính bằng USD từ năm 2012 đến năm 2022.
Date - Ngày ghi giá
Close - Ngày đóng giá vàng tính bằng USD
Volume - Tổng lượng mua và bán của hàng hoá vàng
Open - Giá mở của vàng vào ngày cụ thể đó
High - Giá vàng cao nhất của ngày cụ thể đó
Low - Giá vàng thấp nhất vào ngày cụ thể đó.
Đọc dữ liệu vàng hàng ngày trong 10 năm qua và lưu trữ nó trong df. Xóa các cột không liên quan
Các thuộc tính có kiểu dữ liệu phù hợp để phân tích, cột Date đã có kiểu Datetime
Kích thước của dữ liệu:
Dữ liệu có missing value nên phải xử lý lại dữ liệu
Sau khi xử lý missing value chúng ta loại bỏ đi 39 hàng trong bộ dữ liệu.
Do 39 dòng nhỏ so với số lượng hơn 2000 dòng trong bộ dữ liệu nên sau khi loại bỏ 39 dòng, bộ dữ liệu vẫn còn đủ tốt để phân tích và train model.
Sử dụng hàm pairplot, heatmap để tìm kiếm các biến có tương quan mạnh với giá vàng
![image](https://user-images.githubusercontent.com/125122891/222762136-c6f50d81-8e4c-45b1-970b-e9b405aa13c6.png)
![image](https://user-images.githubusercontent.com/125122891/222762166-72dccbb0-c603-413e-b24d-5fbd79f24943.png)
Nhìn vào biểu đồ trên ta thấy các biến Close/Last, Open, High, Low có tương quan với nhau
Ngoài ra có thể sử dụng heatmap để tìm tương quan giữa các biến
Qua biểu đồ trên cho thấy các biến Close/Last, Open, High, Low có tương quan mạnh với nhau
Sử dụng tính năng tương quan để train model
Sử dụng MinMaxScaler của sklearn để chuẩn hóa lại dữ liệu trong khoảng từ 0 đến 1
Phía dưới là dữ liệu sau khi biến đổi:
So sánh dữ liệu trước và sau khi biến đổi
Tiếp theo tách dữ liệu để train model theo kích thước 8:2
- 3 hidden layers
- 40 Neuron node on each layer
- Relu activation function
Mô hình sẽ biên dịch với:
- Chức năng tối ưu hóa Adam
- Với hàm mất lỗi bình phương trung bình
- Tiến trình training với:
- 100 Epochs
- 50 rows of batch size
Sử dụng mô hình DecisionTree Regressor để dự đoán với tham số mặc định
Random Forest là một thuật toán học có giám sát. Nó tạo ra một khu rừng và biến nó thành ngẫu nhiên theo cách nào đó. Các rừng mà nó xây dựng, là một tập hợp các Cây quyết định, phần lớn thời gian được huấn luyện bằng phương pháp “đóng gói”. Các ý tưởng chung của phương pháp đóng gói là sự kết hợp của các mô hình học tập sẽ làm tăng kết quả tổng thể.Các khu rừng quyết định ngẫu nhiên sửa lỗi cho các cây quyết định có thói quen khớp quá mức với tập huấn luyện của chúng.Tôi đã sử dụng hai tham số n_estimators=50 (giá trị mặc định =10), số lượng cây trong rừng. và random_state=0, random_state là hạt giống được sử dụng bởi trình tạo số ngẫu nhiên.
Trong phần này sẽ chỉnh 3 thông số của RamdomForest là n_estimators, max_features, max_depth
Sau khi áp dụng random forest với n_estimators = 100, đạt được kết quả như sau:
Mô hình được tạo ra bởi Support Vector Regression chỉ phụ thuộc vào một tập con của dữ liệu huấn luyện, bởi vì hàm chi phí để xây dựng mô hình bỏ qua mọi dữ liệu huấn luyện gần với dự đoán của mô hình.
Sử dụng SVR với (kernel=’linear’)