1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo cuối kỳ học phần phân tích dữ liệu Đề tài phân tích dữ liệu thời tiết ở australia

86 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 11,27 MB

Nội dung

4.1 Xử Lý Giá Trị Thiếu Missing Values Giá trị thiếu trong dữ liệu có thể gây ra nhiều vấn đề cho các mô hình phân tích và dự đoán.. - Xem Các Giá Trị Duy Nhất:+ Để kiểm tra các giá trị

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ

TRUYỀN THÔNG VIỆT – HÀN KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO CUỐI KỲ HỌC PHẦN

PHÂN TÍCH DỮ LIỆU

ĐỀ TÀI: PHÂN TÍCH DỮ LIỆU THỜI TIẾT Ở AUSTRALIA

Nhóm : 1 Lê Văn Hiếu 21AD021

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ

TRUYỀN THÔNG VIỆT – HÀN

KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO CUỐI KỲ HỌC PHẦN

Trang 3

LỜI CẢM ƠN

Trong suốt thời gian thực hiện báo cáo cuối kỳ học phần Phân tích dữ liệu,chúng em đã nhận được sự hỗ trợ và giúp đỡ quý báu từ các thầy cô Với tấm lòngchân thành, chúng em xin bày tỏ lòng biết ơn sâu sắc đến tất cả các thầy cô đã tạo điềukiện và giúp đỡ chúng em trong quá trình học tập và nghiên cứu đề tài này

Đặc biệt, chúng em xin gửi lời cảm ơn chân thành và sâu sắc đến thầy giáo TS.Nguyễn Thanh đã trực tiếp hướng dẫn và hỗ trợ chúng em hoàn thành tốt đồ án này

Sự tận tình dạy dỗ và chỉ bảo chu đáo của thầy là nguồn động lực lớn lao giúp chúng

em vượt qua mọi khó khăn để đạt được kết quả như ngày hôm nay

Chúng em cũng nhận thức rằng, do điều kiện thời gian và kinh nghiệm còn hạnchế, đồ án này không thể tránh khỏi những thiếu sót Chúng em rất mong nhận được

sự chỉ bảo và góp ý từ các thầy cô để có thể hoàn thiện hơn, nâng cao kiến thức và kỹnăng, phục vụ tốt hơn cho công việc sau này

Chúng em xin trân trọng cảm ơn.

Sinh viên

Lê Văn Hiếu Trần Thị Thành Nguyễn Thành Đức Phan Nguyễn Thành An

Trang 4

MỤC LỤC

Phần 1 TỔNG QUAN VỀ CÁC KIỂU DỮ LIỆU 1

1.1 Dữ liệu định tính (Qualitative Data) 1

1.2 Dữ liệu định lượng (Quantitative Data) 1

1.3 Dữ liệu dạng văn bản (Text Data) 1

1.4 Dữ liệu dạng thời gian (Time Series Data) 1

1.5 Dữ liệu dạng không gian (Spatial Data) 2

1.6 Dữ liệu hình ảnh (Image Data) 2

1.7 Dữ liệu âm thanh (Audio Data) 2

1.8 Dữ liệu video (Video Data) 2

Phần 2 GIỚI THIỆU VỀ DATASET 3

2.1 Tổng quan về dataset 3

2.2 Các cột dữ liệu chính trong dataset 3

2.3 Mục đích sử dụng của dataset 4

Phần 3 GIẢI THÍCH CÁC BIẾN TRONG DATASET 5

Phần 4 TRÌNH BÀY CÁC BƯỚC TIỀN XỬ LÝ DỮ LIỆU 8

4.1 Xử Lý Giá Trị Thiếu (Missing Values) 8

4.1 Xử Lý Giá Trị Ngoại Lai (Outlier Values) 16

Phần 5 CHUẨN HÓA DỮ LIỆU 19

5.1 Định nghĩa và Mục đích 19

5.2 Các phương pháp chuẩn hoá phổ biến 19

5.3 Ứng dụng chuẩn hóa dữ liệu trong dataset weatherAUS.csv 20

Phần 6 TẠO CÁC BIẾN MỚI CÓ Ý NGHĨA DỰA VÀO CÁC BIẾN ĐÃ CÓ 22

Trang 5

6.1 Mục tiêu 22

6.2 Tạo biến mới từ biến Date 22

6.2 Tạo biến mới từ biến RainToday 24

6.3 Kết luận 26

Phần 7 NÊU CÁC CÂU HỎI NGHIÊN CỨU VÀ PHÂN TÍCH, THỐNG KÊ, TRỰC QUAN VÀ GIẢI THÍCH Ý NGHĨA CHO TỪNG BIỂU ĐỒ 27

7.1 Câu hỏi nghiên cứu 1 27

7.2 Câu hỏi nghiên cứu 2 29

7.3 Câu hỏi nghiên cứu 3 31

7.4 Câu hỏi nghiên cứu 4 33

7.5 Câu hỏi nghiên cứu 5 35

7.6 Câu hỏi nghiên cứu 6 37

7.7 Câu hỏi nghiên cứu 7 39

7.8 Câu hỏi nghiên cứu 8 40

7.9 Câu hỏi nghiên cứu 9 42

7.10 Câu hỏi nghiên cứu 10 44

Phần 8 XÂY DỰNG CÁC MÔ HÌNH VÀ ĐÁNH GIÁ ĐỘ CHÍNH XÁC, GIẢI THÍCH Ý NGHĨA CỦA MÔ HÌNH, DỰ BÁO 46

8.1 Mô hình Logistic Regression 46

8.2 Mô hình Random Forest 51

8.3 Mô hình KNN (K-Nearest Neighbors) 55

8.4 Mô hình ANN 62

8.5 Mô hình LSTM 66

8.6 Giải thích ý nghĩa của mô hình 70

8.7 Ứng dụng (Dự báo với dữ liệu mới) 73

Trang 6

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT

Từ viết tắt/ Ký

hiệu

Tiếng Việt Tiếng Anh

DDBS Hệ cơ sở dữ liệu phân tán Distributed database systemMAONT Mô hình nâng cao của giao dịch

lồng nhau

Model advanced of opennested transaction

Trang 7

DANH MỤC BẢNG

Bảng 1 : Giải thích các biến trong bộ dữ liệu 5Bảng 2 : Ma trận nhầm lẫn của mô hình KNN 57

Trang 8

DANH MỤC HÌNH ẢNH

Hình 1 : Bộ dữ liệu 3

Hình 2 : Khám phá biến mục tiêu - RainTomorrow 8

Hình 3 : Xem số lượng giá trị duy nhất 1 - RainTomorrow 8

Hình 4 : Xem số lượng giá trị duy nhất 2 - RainTomorrow 9

Hình 5 : Biểu đồ số lượng record trong RainTomorrow .10

Hình 6 : Khám phá các biến phân loại 10

Hình 7 : Khám phá các vấn đề trong biến phân loại 11

Hình 8 : Xử lý các giá trị bị thiếu trong biến phân loại - 1 12

Hình 9 : Xử lý các giá trị bị thiếu trong biến phân loại - 2 12

Hình 10 : Xem tần suất của các biến phân loại 13

Hình 11 : Kiểm tra số lượng trong các biến phân loại 13

Hình 12 : Khám phá biến số 13

Hình 13 : Kiểm tra giá trị còn thiếu trong các biến số 14

Hình 14 : Xử lý ngoại lệ cho các biến số - 1 15

Hình 15 : Xử lý ngoại lệ cho các biến số - 2 15

Hình 16 : Danh sách các biến số sau khi xử lý ngoại lệ 15

Hình 17 : Trước khi xử lý ngoại lai 16

Hình 18 : Sau khi xử lý ngoại lai 18

Hình 19 : Min-Max Scaling 19

Hình 20 : Standardization 19

Hình 21 : Robust Scaling 20

Hình 22 : Tiền xử lý dữ liệu - Loại bỏ na 20

Hình 23 : Tiền xử lý dữ liệu - Xem mô tả tập dữ liệu 21

Trang 9

Hình 24 : Chuẩn hoá dữ liệu với Min-Max Scaling 21

Hình 25 : Kết quả chuẩn hoá dữ liệu với Min-Max Scaling 21

Hình 26 : Chuyển đổi biến Date sang định dạng datetime 22

Hình 27 : Trích xuất năm từ biến Date 22

Hình 28 : Trích xuất tháng từ biến Date 23

Hình 29 : Trích xuất ngày từ biến Date 23

Hình 30 : Xoá biến Date ban đầu 23

Hình 31 : Info của tập dataset 24

Hình 32 : Tạo ra biến phân loại mới RainToday_0 và RainToday_1 25

Hình 33 : Câu hỏi nghiên cứu 1 27

Hình 34 : Vẽ biểu đồ trực quan - Câu hỏi nghiên cứu 1 28

Hình 35 : Câu hỏi nghiên cứu 2 29

Hình 36 : Trực quan biểu đồ - Câu hỏi nghiên cứu 2 30

Hình 37 : Câu hỏi nghiên cứu 3 32

Hình 38 : Biều đồ trực quan - Câu hỏi nghiên cứu 3 32

Hình 39 : Câu hỏi nghiên cứu 4 33

Hình 40 : Trực quan biểu đồ - Câu hỏi nghiên cứu 4 34

Hình 41 : Câu hỏi nghiên cứu 5 35

Hình 42 : Biểu đồ trực quan - Câu hỏi nghiên cứu 5 36

Hình 43 : Câu hỏi nghiên cứu 6 37

Hình 44 : Câu hỏi nghiên cứu 7 39

Hình 45 : Câu hỏi nghiên cứu 8 40

Hình 46 : Trực quan biểu đồ - Câu hỏi nghiên cứu 8 41

Hình 47 : Câu hỏi nghiên cứu 9 42

Trang 10

Hình 48 : Biểu đồ trực quan - Câu hỏi nghiên cứu 9 43

Hình 49 : Câu hỏi nghiên cứu 10 44

Hình 50 : Mô hình Logistic Regression 46

Hình 51 : Khởi tạo mô hình Logistic Regression 46

Hình 52 : Huấn luyện mô hình Logistic Regression 46

Hình 53 : Lưu và tải mô hình Logistic Regression 47

Hình 54 : Cross-validated ROC AUC Logistic Regression 47

Hình 55 : Báo cáo phân loại mô hình Logistic Regression 47

Hình 56 : Thời gian training mô hình Logistic Regression 48

Hình 57 : Ma trận nhầm lẫn mô hình Logistic Regression 49

Hình 58 : ROC Curve mô hình Logistic Regression 50

Hình 59 : Đánh giá hiệu suất mô hình Logistic Regression 51

Hình 60 : Mô hình Random Forest 51

Hình 61 : Ma trận nhầm lẫn mô hình Random Forest 53

Hình 62 : Đánh giá hiệu suất mô hình Random Forest 54

Hình 63 : ROC Curve mô hình Random Forest 55

Hình 64 : Mô hình KNN 56

Hình 65 : Ma trận nhầm lẫn mô hình KNN 58

Hình 66 : Các chỉ số hiệu suất mô hình KNN 59

Hình 67 : ROC Curve mô hình KNN 60

Hình 68 : Precision-Recall Curve mô hình KNN 61

Hình 69 : Mô hình ANN - 1 62

Hình 70 : Mô hình ANN - 2 62

Hình 71 : Learning curves loss mô hình KNN 63

Trang 11

Hình 72 : Learning curves accuracy mô hình KNN 64

Hình 73 : Các chỉ số hiệu suất mô hình KNN - 1 65

Hình 74 : Các chỉ số hiệu suất mô hình KNN - 2 66

Hình 75 : Mô hình LSTM 67

Hình 76 : Khởi tạo tham số LSTM 69

Hình 77 : Định nghĩa mô hình LSTM 69

Hình 78 : Các chỉ số đánh giá mô hình LSTM 70

Hình 79 : Ứng dụng dự báo 73

Trang 12

Phần 1 TỔNG QUAN VỀ CÁC KIỂU DỮ LIỆU

Trong môn phân tích dữ liệu, kiểu dữ liệu đóng vai trò rất quan trọng trong việcthu thập, xử lý, và phân tích thông tin Dưới đây là tổng quan về các kiểu dữ liệuthường gặp:

1.1 Dữ liệu định tính (Qualitative Data)

Dữ liệu định tính mô tả các đặc điểm hoặc thuộc tính mà không thể biểu diễnbằng số Nó bao gồm:

+ Dữ liệu danh nghĩa (Nominal Data): Là dữ liệu được sử dụng để gán tên hoặcnhãn cho các danh mục mà không có thứ tự cụ thể Ví dụ: giới tính (nam, nữ), loại xe(xe hơi, xe máy, xe đạp)

+ Dữ liệu thứ tự (Ordinal Data): Là dữ liệu danh nghĩa nhưng có thứ tự hoặcmức độ Ví dụ: mức độ hài lòng (rất không hài lòng, không hài lòng, bình thường, hàilòng, rất hài lòng), cấp bậc học vấn (tiểu học, trung học, đại học)

1.2 Dữ liệu định lượng (Quantitative Data)

Dữ liệu định lượng là dữ liệu có thể được đo lường và biểu diễn bằng số Nóbao gồm:

+ Dữ liệu khoảng (Interval Data): Là dữ liệu có khoảng cách đều nhau giữa cácgiá trị nhưng không có điểm gốc (zero) tuyệt đối Ví dụ: nhiệt độ (°C, °F), năm (1990,2000)

+ Dữ liệu tỉ lệ (Ratio Data): Là dữ liệu có cả khoảng cách đều nhau và điểm gốctuyệt đối, cho phép thực hiện các phép toán nhân và chia Ví dụ: chiều cao, cân nặng,tuổi tác, thu nhập

1.3 Dữ liệu dạng văn bản (Text Data)

Dữ liệu văn bản là dữ liệu dạng chuỗi ký tự, thường được sử dụng để biểu diễnthông tin không có cấu trúc rõ ràng Ví dụ: bài viết, bình luận, email

1.4 Dữ liệu dạng thời gian (Time Series Data)

Dữ liệu thời gian là dữ liệu được thu thập theo thời gian, thường là liên tục hoặc

Trang 13

theo khoảng thời gian đều đặn Ví dụ: giá cổ phiếu theo ngày, nhiệt độ theo giờ, doanh

số bán hàng theo tháng

1.5 Dữ liệu dạng không gian (Spatial Data)

Dữ liệu không gian mô tả các thông tin liên quan đến vị trí địa lý hoặc khônggian Ví dụ: tọa độ GPS, bản đồ, dữ liệu địa lý

1.6 Dữ liệu hình ảnh (Image Data)

Dữ liệu hình ảnh là dữ liệu đồ họa, có thể là ảnh kỹ thuật số, ảnh y khoa, hoặccác dạng hình ảnh khác Ví dụ: ảnh chụp, biểu đồ

1.7 Dữ liệu âm thanh (Audio Data)

Dữ liệu âm thanh là dữ liệu dạng sóng âm thanh, thường được biểu diễn dướidạng tín hiệu số Ví dụ: bản ghi âm, podcast, nhạc

1.8 Dữ liệu video (Video Data)

Dữ liệu video là tập hợp các khung hình hình ảnh kết hợp với âm thanh, tạothành một chuỗi video Ví dụ: video clip, phim, ghi hình

Kết luận: Việc nhận diện và hiểu rõ các kiểu dữ liệu là bước đầu quan trọngtrong quá trình phân tích dữ liệu Mỗi loại dữ liệu có cách xử lý và phân tích riêng, do

đó việc lựa chọn phương pháp phù hợp sẽ giúp cho quá trình phân tích trở nên hiệuquả và chính xác hơn

Trang 14

Phần 2 GIỚI THIỆU VỀ DATASET

2.1 Tổng quan về dataset

Bộ dữ liệu này chứa dữ liệu quan sát thời tiết hàng ngày trong khoảng 10 năm

từ nhiều trạm thời tiết của Úc Bộ dữ liệu bao gồm 145460 hàng và 23 cột khác nhau.Dataset weatherAUS.csv là một tập dữ liệu về thời tiết tại các địa điểm khácnhau ở Úc Nó chứa thông tin về các yếu tố thời tiết như nhiệt độ, độ ẩm, lượng mưa,

và các chỉ số khác qua nhiều năm Dưới đây là một cái nhìn tổng quan về các thànhphần và ý nghĩa của các cột trong dataset này

RainTomorrow là biến mục tiêu để dự đoán Nó có nghĩa là trời có mưa vàongày hôm sau không, Yes or No ( Có hoặc Không?)

Cột này là Yes (Có) nếu lượng mưa trong ngày hôm đó là 1mm trở lên

Hình 1 : Bộ dữ liệu

2.2 Các cột dữ liệu chính trong dataset

- Date: Ngày ghi nhận dữ liệu (định dạng YYYY-MM-DD)

- Location: Địa điểm ghi nhận dữ liệu (tên các thành phố hoặc thị trấn ở Úc)

- MinTemp: Nhiệt độ thấp nhất trong ngày (°C)

- MaxTemp: Nhiệt độ cao nhất trong ngày (°C)

- Rainfall: Lượng mưa trong ngày (mm)

- Evaporation: Lượng nước bốc hơi trong ngày (mm)

- Sunshine: Thời gian có nắng trong ngày (giờ)

- WindGustDir: Hướng gió giật mạnh nhất trong ngày

- WindGustSpeed: Tốc độ gió giật mạnh nhất trong ngày (km/h)

- WindDir9am: Hướng gió lúc 9 giờ sáng

Trang 15

- WindDir3pm: Hướng gió lúc 3 giờ chiều.

- WindSpeed9am: Tốc độ gió lúc 9 giờ sáng (km/h)

- WindSpeed3pm: Tốc độ gió lúc 3 giờ chiều (km/h)

- Humidity9am: Độ ẩm lúc 9 giờ sáng (%)

- Humidity3pm: Độ ẩm lúc 3 giờ chiều (%)

- Pressure9am: Áp suất khí quyển lúc 9 giờ sáng (hPa)

- Pressure3pm: Áp suất khí quyển lúc 3 giờ chiều (hPa)

- Cloud9am: Mức độ mây che phủ lúc 9 giờ sáng (okta)

- Cloud3pm: Mức độ mây che phủ lúc 3 giờ chiều (okta)

- Temp9am: Nhiệt độ lúc 9 giờ sáng (°C)

- Temp3pm: Nhiệt độ lúc 3 giờ chiều (°C)

- RainToday: Có mưa trong ngày (Yes hoặc No)

- RainTomorrow: Có mưa vào ngày hôm sau (Yes hoặc No)

2.3 Mục đích sử dụng của dataset

Dự báo thời tiết: Một trong những ứng dụng phổ biến nhất của dataset này là dựbáo thời tiết Các mô hình máy học có thể được đào tạo để dự đoán các yếu tố thời tiếttrong tương lai, chẳng hạn như nhiệt độ, lượng mưa, hay hướng gió

Phân tích xu hướng thời tiết: Phân tích dữ liệu lịch sử để tìm hiểu các xu hướngthời tiết theo thời gian Điều này có thể giúp hiểu rõ hơn về sự biến đổi khí hậu và ảnhhưởng của nó đến các khu vực khác nhau

Quyết định nông nghiệp: Thông tin về thời tiết là rất quan trọng đối với nôngnghiệp Dữ liệu này có thể giúp nông dân đưa ra các quyết định về thời gian trồng trọt

và thu hoạch, cũng như các biện pháp bảo vệ cây trồng khỏi thời tiết khắc nghiệt.Kết luận: Dataset weatherAUS.csv cung cấp một nguồn dữ liệu phong phú vàhữu ích cho nhiều mục đích phân tích và dự báo thời tiết Hiểu rõ cấu trúc và ý nghĩacủa từng cột dữ liệu là bước đầu tiên quan trọng trong việc tận dụng tối đa giá trị củanó

Phần 3 GIẢI THÍCH CÁC BIẾN TRONG DATASET

Trang 16

Dataset weatherAUS.csv bao gồm nhiều biến số, mỗi biến số đại diện cho mộtyếu tố hoặc chỉ số thời tiết Dưới đây là bảng giải thích chi tiết về từng biến số trongdataset này:

Bảng 1 : Giải thích các biến trong bộ dữ liệu

STT Tên biến Loại dữliệu Định dạng Đơn vị Mô tả

1 Date (Nominal)Định tính

MM-DD(năm-tháng-ngày)

YYYY-Ngày ghinhận dữ liệu

2 Location (Nominal)Định tính

Tên cácthành phốhoặc thịtrấn ở Úc

Địa điểm ghinhận dữ liệu

Địnhlượng(Ratio)

Số thực °C (độ C)

Nhiệt độ thấpnhất trongngày

mm(milimét)

Lượng mưatrong ngày

Hướng giógiật mạnhnhất trongngày (ví dụ:

N, S, E, W)

9 WindGustSpeed Định Số nguyên km/h Tốc độ gió

Trang 17

(kilômét/giờ)

giật mạnhnhất trongngày

10 WindDir9am (Nominal)Định tính

Chuỗi ký

tự (ký hiệuhướng gió)

Hướng giólúc 9 giờsáng

11 WindDir3pm (Nominal)Định tính tự (ký hiệuChuỗi ký

hướng gió)

Hướng giólúc 3 giờchiều

12 WindSpeed9am

Địnhlượng(Ratio) Số nguyên.

km/h(kilômét/giờ)

Tốc độ giólúc 9 giờsáng

13 WindSpeed3pm

Địnhlượng(Ratio)

Số nguyên

km/h(kilômét/giờ)

Tốc độ giólúc 3 giờchiều

Độ ẩm lúc 3giờ chiều

16 Pressure9am

Địnhlượng(Ratio)

Số thực

hPa(hectopascal)

Áp suất khíquyển lúc 9giờ sáng

18 Cloud9am

Địnhlượng(Interval)

Số nguyên(0-8)

okta (đơn vị

đo lượngmây)

Mức độ mâyche phủ lúc 9giờ sáng

19 Cloud3pm lượngĐịnh

(Interval)

Số nguyên(0-8)

okta (đơn vị

đo lượngmây)

Mức độ mâyche phủ lúc 3giờ chiều(okta)

Địnhlượng(Ratio)

Số thực °C (độ C) Nhiệt độ lúc9 giờ sáng

Trang 18

21 Temp3pm

Địnhlượng(Ratio) Số thực °C (độ C)

Nhiệt độ lúc

3 giờ chiều(°C)

22 RainToday (Nominal)Định tính Chuỗi kýtự

Có mưatrong ngàykhông (Yeshoặc No)

23 RainTomorrow (Nominal)Định tính Chuỗi kýtự

Có mưa vàongày hômsau không(Yes hoặcNo)

Phần 4 TRÌNH BÀY CÁC BƯỚC TIỀN XỬ LÝ DỮ

Trang 19

4.1 Xử Lý Giá Trị Thiếu (Missing Values)

Giá trị thiếu trong dữ liệu có thể gây ra nhiều vấn đề cho các mô hình phân tích

và dự đoán Dưới đây là các bước xử lý giá trị thiếu trong bộ dữ liệu thời tiết ởAustralia

- Khám phá biến mục tiêu RainTomorrow:

+ Để kiểm tra số lượng giá trị thiếu trong biến mục tiêu RainTomorrow

Hình 2 : Khám phá biến mục tiêu - RainTomorrow

+ Giải thích: Số lượng giá trị thiếu trong biến RainTomorrow là 3267 Điều nàycho thấy có một lượng đáng kể các giá trị thiếu cần được xử lý trước khi tiến hành cácbước phân tích tiếp theo

- Xem Số Lượng Giá Trị Duy Nhất:

+ Để kiểm tra số lượng giá trị duy nhất trong biến RainTomorrow

Hình 3 : Xem số lượng giá trị duy nhất 1 - RainTomorrow

+ Giải thích: Biến RainTomorrow có 2 giá trị duy nhất Điều này cho thấy biếnnày là một biến phân loại nhị phân, với hai trạng thái có thể là "Yes" (có mưa vào ngàymai) và "No" (không có mưa vào ngày mai)

Trang 20

- Xem Các Giá Trị Duy Nhất:

+ Để kiểm tra các giá trị duy nhất trong biến RainTomorrow:

Hình 4 : Xem số lượng giá trị duy nhất 2 - RainTomorrow

+ Giải thích: Biến RainTomorrow có ba giá trị: 'No', 'Yes', và nan (giá trị thiếu).Điều này cho thấy rằng dữ liệu của chúng ta có một số bản ghi thiếu giá trị trong biếnnày

- Xử Lý Giá Trị Thiếu: Sau khi loại bỏ các bản ghi thiếu giá trị trong biếnRainTomorrow, không còn bản ghi nào bị thiếu giá trị trong biến này nữa

- Trực quan hóa phân bố tần số của biến RainTomorrow: Biểu đồ cột và biểu đồngang dưới biểu diễn tần suất (số lượng) của hai loại giá trị trong biến RainTomorrow:+ No (Không mưa): Cột màu đỏ cho thấy số lượng trường hợp dự đoán không

có mưa ngày mai là cao hơn hẳn so với trường hợp có mưa Số lượng này vượt quá100.000

+ Yes (Có mưa): Cột màu xanh biểu thị số lượng trường hợp dự đoán có mưangày mai, thấp hơn đáng kể, chỉ khoảng 30.000

Trang 21

Hình 5 : Biểu đồ số lượng record trong RainTomorrow

Các loại biến: Trong phần này, tách tập dữ liệu thành các biến phân loại và số

Có sự kết hợp của các biến phân loại và số trong tập dữ liệu Các biến phân loại có đốitượng kiểu dữ liệu Các biến số có kiểu dữ liệu float64 Trước hết, sẽ tìm các biếnphân loại

- Khám phá các biến phân loại: Bước khám phá dưới đã xác định được 7 biến

phân loại trong dữ liệu Các biến này chứa thông tin hữu ích về thời gian, địa điểm,hướng gió, và tình trạng mưa, rất quan trọng trong việc dự báo thời tiết ngày mai Việc

xử lý và chuyển đổi đúng cách sẽ giúp cải thiện chất lượng của mô hình dự đoán

Hình 6 : Khám phá các biến phân loạiTrong quá trình phân tích tập dữ liệu, 6 biến phân loại được xác định bao gồm:Location, WindGustDir, WindDir9am, WindDir3pm, RainToday, và RainTomorrow

Trang 22

Các biến này chứa thông tin quan trọng về thời gian, địa điểm, hướng gió, và tìnhtrạng mưa, rất cần thiết cho việc dự báo thời tiết ngày mai Tuy nhiên, một số biến cógiá trị còn thiếu (missing values), cụ thể như sau:

+ WindGustDir: 9,330 giá trị còn thiếu

+ WindDir9am: 10,013 giá trị còn thiếu

+ WindDir3pm: 3,778 giá trị còn thiếu

+ RainToday: 1,406 giá trị còn thiếu

+ Location và RainTomorrow không có giá trị thiếu

Để xử lý vấn đề này, các chiến lược phù hợp sẽ được áp dụng nhằm đảm bảotính toàn vẹn của dữ liệu Đối với các biến hướng gió (WindGustDir, WindDir9am,WindDir3pm), giá trị thiếu có thể được điền bằng giá trị phổ biến nhất (mode), hoặcđược nhóm theo Location để thay thế dựa trên đặc thù khu vực Biến RainToday cóthể được xử lý dựa vào mode hoặc dựa vào lượng mưa (Rainfall): nếu lượng mưa vượtmột ngưỡng xác định (ví dụ: >1mm), giá trị sẽ được điền là Yes, ngược lại là No Haibiến Location và RainTomorrow không có giá trị thiếu nên giữ nguyên

Hình 7 : Khám phá các vấn đề trong biến phân loại

- Xử lý các giá trị bị thiếu trong các biến phân loại

+ Trong quá trình phân tích, chúng tôi nhận thấy các biến phân loại có dữ liệu

Trang 23

bị thiếu Cụ thể, tỷ lệ dữ liệu thiếu của các biến như sau: WindGustDir: 6.56%WindDir9am: 7.04% WindDir3pm: 2.66% RainToday: 0.99%

Hình 8 : Xử lý các giá trị bị thiếu trong biến phân loại - 1

+ Để xử lý dữ liệu thiếu, chúng tôi sử dụng giá trị mode (giá trị xuất hiện nhiềunhất) của từng biến để điền vào các ô trống Sau khi thực hiện, không còn dữ liệu thiếutrong các biến phân loại Kết quả là sau khi điền giá trị thiếu, kiểm tra lại dữ liệu chothấy không còn biến nào có giá trị thiếu

Hình 9 : Xử lý các giá trị bị thiếu trong biến phân loại - 2

- Để hiểu rõ hơn về dữ liệu, chúng tôi kiểm tra tần suất xuất hiện của từng giátrị trong các biến phân loại Tần suất các biến phân loại:

+ Date: Có 3436 giá trị khác nhau, mỗi giá trị tương ứng với một ngày cụ thể.+ Location: Có 49 địa điểm khác nhau

+ WindGustDir: Có 16 hướng gió khác nhau, với hướng W chiếm tỷ lệ cao nhất(13.44%)

+ WindDir9am: Có 16 hướng gió khác nhau, với hướng N chiếm tỷ lệ cao nhất(15.05%)

+ WindDir3pm: Có 16 hướng gió khác nhau, với hướng SE chiếm tỷ lệ caonhất (10.16%)

Trang 24

RainToday: Có hai giá trị: "No" (77.88%) và "Yes" (22.12%).

RainTomorrow: Có hai giá trị: "No" (77.58%) và "Yes" (22.42%)

Hình 10 : Xem tần suất của các biến phân loại

Hình 11 : Kiểm tra số lượng trong các biến phân loại

- Khám phá các biến số : Trong tập dữ liệu của chúng ta, có tổng cộng 19 biến số

học (numerical variables) cần được xem xét kỹ lưỡng

Hình 12 : Khám phá biến số

- Giá trị thiếu trong các biến số:

Trang 25

+ MinTemp và MaxTemp: Có ít giá trị thiếu so với tổng số lượng dữ liệu.(MinTemp: 637 giá trị thiếu, MaxTemp: 322 giá trị thiếu.)

+ Rainfall: Lượng mưa thiếu nhiều hơn, với 1406 giá trị thiếu

+ Evaporation và Sunshine: Có lượng giá trị thiếu rất lớn (Evaporation: 60843giá trị thiếu, Sunshine: 67816 giá trị thiếu.)

+ WindGustSpeed, WindSpeed9am, WindSpeed3pm: Các giá trị liên quan đếntốc độ gió cũng thiếu đáng kể (WindGustSpeed: 9270 giá trị thiếu WindSpeed9am:

1348 giá trị thiếu WindSpeed3pm: 2630 giá trị thiếu.)

+ Humidity9am và Humidity3pm: Độ ẩm thiếu ở mức vừa phải.(Humidity9am:

1774 giá trị thiếu Humidity3pm: 3610 giá trị thiếu.)

+ Pressure9am và Pressure3pm: Áp suất có nhiều giá trị thiếu.(Pressure9am:

14014 giá trị thiếu Pressure3pm: 13981 giá trị thiếu.)

+ Cloud9am và Cloud3pm: Độ che phủ mây thiếu nhiều nhất.(Cloud9am:

53657 giá trị thiếu Cloud3pm: 57094 giá trị thiếu.)

+ Temp9am và Temp3pm: Nhiệt độ thiếu ở mức trung bình.(Temp9am: 904 giátrị thiếu Temp3pm: 2726 giá trị thiếu.)

+ Year, Month, Day: Không có giá trị thiếu cho các biến này

Hình 13 : Kiểm tra giá trị còn thiếu trong các biến số

- Chúng ta đã xử lý các giá trị thiếu trong các biến số bằng cách thay thế chúngbằng giá trị trung vị của cột tương ứng Dưới đây là các bước chi tiết và kết quả kiểmtra sau khi xử lý:

Trang 26

+ Chúng ta tính tỷ lệ giá trị thiếu cho từng biến số và hiển thị chúng:

Hình 14 : Xử lý ngoại lệ cho các biến số - 1+ Thay thế giá trị thiếu bằng giá trị trung vị

Hình 15 : Xử lý ngoại lệ cho các biến số - 2+ Kiểm tra lại giá trị thiếu sau khi thay thế

Hình 16 : Danh sách các biến số sau khi xử lý ngoại lệ

4.1 Xử Lý Giá Trị Ngoại Lai (Outlier Values)

Trang 27

Giá trị ngoại lai là những giá trị khác biệt rõ rệt so với phần còn lại của dữ liệu

và có thể ảnh hưởng tiêu cực đến kết quả phân tích Dưới đây là các bước xử lý giá trịngoại lai

Khám phá và xử lý giá trị ngoại lệ với các biến số - Rainfall, Evaporation,WindSpeed9am, WindSpeed3pm

Khi kiểm tra các biến số trong dữ liệu, các cột Rainfall (Lượng mưa),Evaporation (Bốc hơi), WindSpeed9am, và WindSpeed3pm được xác định có thể chứagiá trị ngoại lệ Để hiểu rõ hơn về vấn đề, biểu đồ hộp (boxplot) đã được vẽ nhằm trựcquan hóa sự phân phối của các giá trị và phát hiện các ngoại lệ

Hình 17 : Trước khi xử lý ngoại lai

1 Rainfall (Lượng mưa):

Quan sát biểu đồ cho thấy có một số giá trị vượt ra ngoài khoảng giới hạn trên(upper whisker), được xem là ngoại lệ Những giá trị này xuất hiện trong khoảng từ0.6 đến 1.0 mm

Nhận xét đây có thể là do các cơn mưa lớn bất thường Các ngoại lệ này cầnđược kiểm tra thêm để xem xét tính hợp lệ và ảnh hưởng đến phân tích

2 Evaporation (Bốc hơi):

Trang 28

Quan sát biểu đồ thể hiện rất nhiều giá trị ngoại lệ ở phía trên Sự phân bố nàycho thấy phần lớn các giá trị tập trung dưới mức 8 mm, nhưng có một số điểm caovượt ngưỡng 12-14 mm.

Nhận xét điều này có thể xảy ra trong những ngày thời tiết khắc nghiệt hoặc cóthể là lỗi đo lường Các giá trị này cần được xử lý cẩn thận để giảm tác động đến cáckết quả phân tích

3 WindSpeed9am:

Quan sát phân phối của tốc độ gió lúc 9 giờ sáng khá đồng đều, với rất ít hoặckhông có ngoại lệ rõ ràng Phạm vi giá trị nằm trong khoảng từ 0 đến khoảng 35 km/h.Nhận xét dữ liệu này dường như không có vấn đề lớn về ngoại lệ Có thể sửdụng trực tiếp mà không cần xử lý bổ sung

4 WindSpeed3pm:

Quan sát tương tự như WindSpeed9am, biểu đồ không cho thấy ngoại lệ đáng

kể Phân bố giá trị nằm trong khoảng từ 0 đến khoảng 40 km/h

Nhận xét tốc độ gió lúc 3 giờ chiều có sự phân bố ổn định và không cần cácbiện pháp xử lý ngoại lệ phức tạp

- Xử lý ngoại lệ sử dụng phương pháp Interquartile Range (IQR)

Trong phân tích dữ liệu, việc xử lý các giá trị ngoại lệ là một bước quan trọngnhằm loại bỏ các yếu tố gây méo mó kết quả và ảnh hưởng tiêu cực đến hiệu suất của

mô hình Sử dụng phương pháp Interquartile Range (IQR) để xác định và thay thế cácgiá trị ngoại lệ Phương pháp này dựa trên khoảng cách giữa phần tư thứ ba (Q3) vàphần tư thứ nhất (Q1) để tính ngưỡng dưới và ngưỡng trên, qua đó phát hiện các giá trịnằm ngoài phạm vi hợp lý

Đối với biến Rainfall, các giá trị ngoại lệ được xác định là nhỏ hơn -3.0 hoặclớn hơn 3.2 Dựa trên phân tích, các giá trị này đã được thay thế bằng giá trị trung bìnhcủa cột Rainfall để giảm thiểu sự sai lệch Điều này giúp làm sạch dữ liệu mà vẫn giữđược đặc điểm chung của biến số

Đối với biến Evaporation, áp dụng phương pháp tương tự để tính toán cácngưỡng ngoại lệ Các giá trị nhỏ hơn -3.0 hoặc lớn hơn 3.225 đã được thay thế bằnggiá trị trung bình của cột Kết quả là biến Evaporation không còn chứa các giá trị bấtthường, đảm bảo tính toàn vẹn của dữ liệu

Trang 29

Biến WindSpeed9am cũng được xử lý theo cách tương tự Các giá trị ngoại lệđược xác định là nhỏ hơn 2.5 hoặc lớn hơn 23.5, và thay thế những giá trị này bằngtrung bình của cột WindSpeed9am Đối với biến WindSpeed3pm, các giá trị ngoàikhoảng 8.35 và 28.5 đã được thay thế để đảm bảo tính chính xác của dữ liệu.Sau khi xử lý ngoại lệ, vẽ lại biểu đồ boxplot để kiểm tra kết quả Biểu đồ chothấy rằng các giá trị cực đoan đã được loại bỏ hoặc thay thế hợp lý, đồng thời khôngảnh hưởng đến cấu trúc dữ liệu tổng thể Điều này đảm bảo rằng các biến số Rainfall,Evaporation, WindSpeed9am và WindSpeed3pm sẵn sàng cho các phân tích sâu hơnhoặc xây dựng mô hình dự báo.

Hình 18 : Sau khi xử lý ngoại lai

Phần 5 CHUẨN HÓA DỮ LIỆU5.1 Định nghĩa và Mục đích

Trang 30

Chuẩn hóa dữ liệu là quá trình điều chỉnh các giá trị trong một tập dữ liệu đểđưa chúng về một khoảng giá trị chung hoặc để loại bỏ sự ảnh hưởng của các đơn vị

đo lường khác nhau

- Mục đích chính của chuẩn hóa dữ liệu là:

+ Tăng tốc độ và hiệu quả của các thuật toán học máy: Nhiều thuật toán họcmáy hoạt động tốt hơn hoặc nhanh hơn khi các đặc trưng có cùng khoảng giá trị.+ Giảm sự thiên lệch: Giúp các thuật toán không bị ảnh hưởng bởi các đặctrưng có giá trị lớn hơn

+ Cải thiện độ chính xác: Giúp các mô hình học máy đạt độ chính xác cao hơn

do các đặc trưng được đưa về cùng một khoảng giá trị

5.2 Các phương pháp chuẩn hoá phổ biến

- Min-Max Scaling: Phương pháp Min-Max Scaling (Tỉ lệ hóa cực tiểu - cựcđại) đưa các giá trị về khoảng giá trị [0, 1] hoặc một khoảng giá trị xác định nào đó.Công thức chuyển đổi:

Hình 19 : Min-Max Scaling+ Ưu điểm: Giữ nguyên mối quan hệ tỷ lệ giữa các giá trị gốc

+ Nhược điểm: Nhạy cảm với các giá trị ngoại lai (outliers)

- Standardization (score Normalization): Standardization (Chuẩn hóa score) đưa các giá trị về dạng phân phối chuẩn với trung bình là 0 và độ lệch chuẩn là

Z-1 Công thức chuyển đổi:

Hình 20 : Standardization

Trong đó:

+ μ là giá trị trung bình của tập dữ liệu

Trang 31

+ σ là độ lệch chuẩn của tập dữ liệu.

+ Ưu điểm: Ít nhạy cảm hơn với các giá trị ngoại lai so với Min-Max Scaling.+ Nhược điểm: Không giữ nguyên tỷ lệ giữa các giá trị gốc

- Robust Scaling: Robust Scaling sử dụng các giá trị trung vị và khoảng tứ phân

vị để chuẩn hóa dữ liệu, giúp giảm ảnh hưởng của các giá trị ngoại lai Công thứcchuyển đổi:

Hình 21 : Robust ScalingTrong đó:

+ median là giá trị trung vị của tập dữ liệu

+ IQR là khoảng tứ phân vị (Interquartile Range)

+ Ưu điểm: Giảm ảnh hưởng của các giá trị ngoại lai

+ Nhược điểm: Có thể làm mất một số thông tin của tập dữ liệu gốc

5.3 Ứng dụng chuẩn hóa dữ liệu trong dataset weatherAUS.csv

Tiền xử lý dữ liệu: Trước khi chuẩn hóa, cần loại bỏ các giá trị bị thiếu vàchuẩn bị dữ liệu:

Hình 22 : Tiền xử lý dữ liệu - Loại bỏ na

Trang 32

Hình 23 : Tiền xử lý dữ liệu - Xem mô tả tập dữ liệu

- Chuẩn hoá dữ liệu với Min-Max Scaling:

Hình 24 : Chuẩn hoá dữ liệu với Min-Max Scaling

- Kết quả sau khi chuẩn hoá:

Hình 25 : Kết quả chuẩn hoá dữ liệu với Min-Max Scaling

Trang 33

Phần 6 TẠO CÁC BIẾN MỚI CÓ Ý NGHĨA DỰA

VÀO CÁC BIẾN ĐÃ CÓ

6.1 Mục tiêu

Trong phần này, chúng ta sẽ tạo ra các biến mới từ biến Date hiện có để hỗ trợtốt hơn cho việc phân tích dữ liệu và xây dựng mô hình

6.2 Tạo biến mới từ biến Date

- Bước 1: Chuyển đổi biến Date sang định dạng datetime: Đầu tiên, chúng tachuyển đổi cột Date, hiện đang ở dạng chuỗi (object), sang định dạng ngày giờ(datetime) Điều này giúp chúng ta dễ dàng trích xuất các thành phần như năm, tháng,

và ngày từ biến Date

Hình 26 : Chuyển đổi biến Date sang định dạng datetime

- Bước 2: Trích xuất các thành phần từ biến Date và Kiểm tra dữ liệu sau khitrích xuất: Sau khi chuyển đổi Date sang định dạng datetime, chúng ta tiến hành tríchxuất các thành phần năm, tháng, và ngày từ biến này và lưu chúng vào các cột mới.Trích xuất năm:

Hình 27 : Trích xuất năm từ biến Date

Trang 34

Trích xuất tháng:

Hình 28 : Trích xuất tháng từ biến DateTrích xuất ngày:

Hình 29 : Trích xuất ngày từ biến Date

- Sau khi trích xuất các thành phần năm, tháng, và ngày, chúng ta kiểm tra lạicác giá trị của những cột mới tạo

- Bước 3: Loại bỏ biến Date ban đầu: Sau khi tạo các cột mới từ biến Date,chúng ta có thể loại bỏ biến Date ban đầu để tránh dư thừa dữ liệu

Hình 30 : Xoá biến Date ban đầu

Trang 35

- Kiểm tra lại cấu trúc của tập dữ liệu: Cuối cùng, chúng ta kiểm tra lại cấu trúccủa tập dữ liệu để đảm bảo rằng các biến mới đã được tạo và biến Date đã được loạibỏ.

Hình 31 : Info của tập dataset

6.2 Tạo biến mới từ biến RainToday

- Mô tả biến RainToday: Biến RainToday là một biến phân loại với hai giá trị:+ "Yes": Có mưa trong ngày

+ "No": Không có mưa trong ngày

Cách tiếp cận và phương pháp mã hoá: Để chuyển đổi giá trị phân loại của biếnRainToday thành dạng số có thể sử dụng trong các mô hình học máy, tôi đã sử dụngBinary Encoding

Binary Encoding là một phương pháp mã hoá cho các biến phân loại với hai giátrị ("Yes"/"No"), biến đổi chúng thành các cột nhị phân Trong trường hợp này, chúng

ta có thể tạo ra hai cột mới: RainToday_0 và RainToday_1, với các giá trị nhị phântương ứng

Trang 36

- Quy trình thực hiện:

1 Chọn biến RainToday trong bộ dữ liệu

2 Áp dụng phương pháp BinaryEncoder từ thư viện Category Encoders.Phương pháp này chuyển đổi biến RainToday thành hai cột nhị phân:

+ RainToday_0: Đại diện cho "No" (không có mưa)

+ RainToday_1: Đại diện cho "Yes" (có mưa)

- Cụ thể:

+ Nếu RainToday có giá trị "No", thì RainToday_0 = 1 và RainToday_1 = 0.+ Nếu RainToday có giá trị "Yes", thì RainToday_0 = 0 và RainToday_1 = 1.Kết quả: Sau khi thực hiện mã hoá, chúng ta có hai cột mới RainToday_0 vàRainToday_1 trong bộ dữ liệu Điều này giúp chúng ta có thể sử dụng các mô hình họcmáy yêu cầu đầu vào là các giá trị số

+ Sự thay đổi trong bộ dữ liệu:

+ Ban đầu, biến RainToday có giá trị "Yes" và "No"

+ Sau khi mã hoá, biến này được chuyển thành hai cột mới với các giá trị nhịphân 0 và 1

Ví dụ:

+ Nếu RainToday = "No", thì RainToday_0 = 1 và RainToday_1 = 0

+ Nếu RainToday = "Yes", thì RainToday_0 = 0 và RainToday_1 = 1.Kiểm tra dữ liệu: Sau khi mã hoá, chúng ta kiểm tra xem dữ liệu có bị thiếu giátrị nào không Kết quả cho thấy rằng tất cả các giá trị thiếu trong bộ dữ liệu đã được

xử lý hoàn toàn, và không có giá trị thiếu trong các cột RainToday_0 và RainToday_1

Trang 37

Hình 32 : Tạo ra biến phân loại mới RainToday_0 và RainToday_1

Trang 38

Phần 7 NÊU CÁC CÂU HỎI NGHIÊN CỨU VÀ

PHÂN TÍCH, THỐNG KÊ, TRỰC QUAN VÀ GIẢI THÍCH Ý NGHĨA CHO TỪNG BIỂU ĐỒ

7.1 Câu hỏi nghiên cứu 1

- Thời gian có nắng trong ngày có ảnh hưởng đến khả năng mưa vào ngày hômsau không?

- Phân tích, thống kê:

Trang 39

Hình 33 : Câu hỏi nghiên cứu 1+ Tính trung bình, độ lệch chuẩn của thời gian có nắng(Sunshine) cho các ngày

có mưa và không có mưa vào ngày hôm sau (RainTomorrow) Tính tổng thời gian cónắng cho mỗi nhóm để xem liệu có sự khác biệt rõ ràng không

+ mean: Trung bình thời gian có nắng cho mỗi nhóm (có mưa và không có mưavào ngày hôm sau)

+ std: Độ lệch chuẩn của thời gian có nắng trong ngày

+ sum: Tổng thời gian có nắng trong ngày cho mỗi nhóm

- Trực Quan và Giải Thích Ý Nghĩa cho Từng Biểu Đồ: Dựa trên biểu đồ dướiđây, chúng ta có ba biểu đồ thanh (bar plot) thể hiện các thông số khác nhau của số giờ

có nắng (Sunshine) theo biến RainTomorrow:

Trang 40

Hình 34 : Vẽ biểu đồ trực quan - Câu hỏi nghiên cứu 1

+ Trung bình số giờ có nắng (Mean Sunshine)

Trực quan: Biểu đồ đầu tiên hiển thị giá trị trung bình số giờ có nắng cho haitrạng thái của biến RainTomorrow (No và Yes) Màu sắc được sử dụng là từ palettecoolwarm

Giải thích: Từ biểu đồ này, ta thấy rằng khi không mưa ngày mai(RainTomorrow = No), số giờ có nắng trung bình cao hơn so với khi có mưa ngày mai(RainTomorrow = Yes) Điều này khá hợp lý vì khi có mưa, bầu trời thường mây mù

và số giờ nắng giảm xuống

+ Độ lệch chuẩn số giờ có nắng (Standard Deviation of Sunshine)

Trực quan: Biểu đồ thứ hai hiển thị độ lệch chuẩn của số giờ có nắng cho haitrạng thái của biến RainTomorrow (No và Yes) Màu sắc được sử dụng là từ paletteviridis

Giải thích: Biểu đồ này cho thấy rằng độ lệch chuẩn của số giờ có nắng cao hơnkhi có mưa ngày mai (RainTomorrow = Yes) so với khi không mưa (RainTomorrow =No) Điều này có thể chỉ ra rằng số giờ có nắng biến đổi nhiều hơn khi có mưa ngàymai, có thể do các yếu tố thời tiết không ổn định hơn

+ Tổng số giờ có nắng (Sum of Sunshine)

Trực quan: Biểu đồ thứ ba hiển thị tổng số giờ có nắng cho hai trạng thái củabiến RainTomorrow (No và Yes) Màu sắc được sử dụng là từ palette magma.Giải thích: Tổng số giờ có nắng khi không mưa ngày mai (RainTomorrow =No) cao hơn đáng kể so với khi có mưa ngày mai (RainTomorrow = Yes) Điều nàycũng hợp lý vì khi mưa, tổng số giờ có nắng sẽ giảm đi do điều kiện thời tiết khôngthuận lợi cho ánh nắng

Ngày đăng: 20/12/2024, 15:18