Bộ dữ liệu dùng Logistic Regression Nhóm phải sử dụng 2 bộ data khác nhau vì bộ data đầu tiên chứa các số liệu kinh tế, không chứa biến phụ thuộc nhị phân để dự đoán xác suất.. 6 - data
Trang 1ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KINH TẾ
Trang 22
DANH SÁCH THÀNH VIÊN NHÓM 11
Tên thành viên Mã sinh viên
Phạm Tuấn Linh 21A5020701
Nguyễn Văn Nhật Long 22K4070061
Nguyễn Thanh Tâm 22K4070105
Trang 3- Per capita GNI: Thu nhập quốc dân bình quân đầu người - Construction (ISIC F): Ngành xây dựng.
- Final consumption expenditure: Chi tiêu tiêu dùng cuối cùng - Mining, Manufacturing, Utilities (ISIC C-E): Khai thác, sản xuất, tiện ích - Total Value Added: Tổng giá trị gia tăng
- Gross National Income (GNI) in USD: Tổng thu nhập quốc dân bằng USD - Gross Domestic Product (GDP): Tổng sản phẩm quốc nội
2 Bộ dữ liệu dùng Logistic Regression
Nhóm phải sử dụng 2 bộ data khác nhau vì bộ data đầu tiên chứa các số liệu kinh tế, không chứa biến phụ thuộc nhị phân để dự đoán xác suất Bộ dữ liệu được sử dụng để dự đoán bằng Logistic Regression dưới đây cung cấp thông tin chi tiết để dự đoán giá nhà, bao gồm 12 cột:
Trang 44 1 Price: Giá của căn nhà
2 Area: Tổng diện tích của căn nhà tính bằng feet vuông 3 Bedrooms: Số phòng ngủ trong căn nhà
4 Bathrooms: Số phòng tắm trong căn nhà 5 Stories: Số tầng của căn nhà
6 Mainroad: Cho biết liệu căn nhà có kết nối với đường chính không (Có/Không) 7 Guestroom: Cho biết liệu căn nhà có phòng khách mời không (Có/Không) 8 Basement: Cho biết liệu căn nhà có tầng hầm không (Có/Không) 9 Hot water heating: Cho biết liệu căn nhà có hệ thống sưởi nước nóng không (Có/Không)
10 Airconditioning: Cho biết liệu căn nhà có hệ thống điều hòa không khí không (Có/Không)
11 Parking: Số lượng chỗ đậu xe có sẵn trong căn nhà 12 Prefarea: Cho biết liệu căn nhà có nằm trong khu vực ưa thích không (Có/Không)
Trang 5* Phân tích tương quan - Ma trận tương quan của các thuộc tính này sẽ cho bạn cái nhìn tổng quan về mối quan hệ giữa các biến Ví dụ:
- Nếu Per capita GNI và GDP có tương quan cao, điều này chỉ ra rằng sự gia tăng thu nhập bình quân đầu người đi cùng với sự tăng trưởng kinh tế
- Nếu Population có tương quan cao với Final consumption expenditure, điều này cho thấy một dân số lớn thường đi cùng với mức chi tiêu cao hơn
Trang 66 - data.corr(): Phương thức corr() được sử dụng để tính toán ma trận tương quan giữa các cột số trong DataFrame data
Kết quả là một DataFrame corr chứa các hệ số tương quan giữa các cặp thuộc tính số
- corr.style: Truy cập vào API kiểu dáng (Styler) của pandas để áp dụng định dạng trực quan cho DataFrame corr
- background_gradient(cmap='coolwarm'): Phương thức background_gradient() áp dụng gradient màu nền cho các ô trong DataFrame dựa trên giá trị của chúng - cmap='coolwarm': Sử dụng bảng màu coolwarm để hiển thị các giá trị Trong đó, màu xanh lam (cool) biểu thị các giá trị thấp (tương quan âm) và màu đỏ (warm) biểu thị các giá trị cao (tương quan dương)
Trang 77 * Ma trận hệ số tương quan:
Ma trận hệ số tương quan cho biết mức độ tương quan giữa các biến Hệ số tương quan có giá trị từ 1 đến 1:-
+ 1: Tương quan hoàn toàn dương + -1: Tương quan hoàn toàn âm + 0: Không có tương quan * Đọc ma trận tương quan: Mỗi giá trị trong ma trận tương quan biểu thị mối tương quan giữa hai biến tương ứng Ví dụ:
- Tương quan giữa `CountryID` và `Year` là 0.004589, nghĩa là hai biến này gần như không có tương quan
- Tương quan giữa `AMA exchange rate` và `IMF based exchange rate` là 0.948164, nghĩa là hai biến này có tương quan dương rất mạnh
Nhóm lựa chọn 2 cột là Total Value Added (Tổng giá trị gia tăng) và Gross Domestic Product - GDP (Tổng sản phẩm quốc nội) để xây dựng mô hình dự đoán Lý do là bởi 2 cột này có giá trị tương quan là 0.999 Đồng thời trên phương diện kinh tế học, chúng có mối quan hệ chặt chẽ với nhau GDP có thể được tính toán thông qua giá trị gia tăng tại các giai đoạn sản xuất khác nhau
GDP là tổng giá trị thị trường của tất cả các hàng hóa và dịch vụ cuối cùng được sản xuất trong một quốc gia trong một khoảng thời gian nhất định
Trang 88 Total Value Added (Tổng giá trị gia tăng): Tổng giá trị gia tăng là tổng giá trị mà các doanh nghiệp, ngành hoặc khu vực kinh tế thêm vào sản phẩm hoặc dịch vụ trong quá trình sản xuất
Total Value Added và GDP có mối quan hệ mật thiết vì GDP theo phương pháp sản xuất được tính bằng cách cộng tổng giá trị gia tăng của tất cả các doanh nghiệp trong nền kinh tế Hiểu rõ mối quan hệ này giúp chúng ta phân tích và đánh giá quá trình tạo ra giá trị trong nền kinh tế, từ sản xuất đến tiêu dùng cuối cùng
Giải thích code:
1 Import các thư viện cần thiết: - `numpy` as `np`: Để thực hiện các phép toán số học - `matplotlib.pyplot` as `plt`: Để vẽ đồ thị
- `pandas` as `pd`: Để thao tác dữ liệu
Trang 99 - `LinearRegression` từ `sklearn.linear_model`: Để thực hiện hồi quy tuyến tính 2 Đọc dữ liệu từ tệp CSV:
- Sử dụng hàm `read_csv()` của Pandas để đọc dữ liệu từ tệp CSV đã chỉ định - Chỉ chọn hai cột: `' Total Value Added '` và `' Gross Domestic Product (GDP) '` 3 Trích xuất dữ liệu cho Total Value Added (TVA) và GDP:
- Cắt các hàng từ dòng thứ 2 đến dòng thứ 51 (chỉ số từ 1 đến 50) để loại bỏ tiêu đề
- Định hình lại dữ liệu TVA thành một mảng 2D với một cột bằng `.reshape(-1, 1)`
4 Khớp mô hình hồi quy tuyến tính: - Tạo một đối tượng `LinearRegression` - Khớp mô hình bằng cách sử dụng dữ liệu TVA và GDP 5 Dự đoán GDP cho các giá trị TVA cụ thể:
- Sử dụng mô hình đã huấn luyện để dự đoán GDP cho hai giá trị TVA đã cho: 316,000,000,000 và 334,000,000,000
6 In các giá trị GDP dự đoán: - In các giá trị GDP dự đoán cho các giá trị TVA đã cho.7 Vẽ đồ thị:
- Điểm phân tán của TVA so với GDP - Vẽ đường hồi quy
- Thêm nhãn, tiêu đề và điểm dự đoán trên đồ thị
Trang 1010 - Chú thích các điểm dự đoán với các giá trị GDP dự đoán 8 Hiển thị đồ thị:
- Hiển thị đồ thị bằng `plt.show()`
Dự đoán GDP dựa trên các giá trị Giá trị gia tăng tổng thể (TVA) cụ thể: Với TVA 2020 31,6 nghìn tỷ USD (316000000000), GDP 2020 dự đoán là khoảng 34,62 nghìn tỷ USD (346205976945,98), giá trị thực của GDP 2020 là 34,7 nghìn tỷ USD
Với TVA 2021 33,4 nghìn tỷ USD (334000000000), GDP 2021 dự đoán là khoảng 36,61 nghìn tỷ USD (366098319522,06), giá trị thực của GDP 2021 là 34,7 nghìn tỷ USD
Có thể thấy, kết quả dự đoán khá sát
Trang 11numpy (np): Dùng cho tính toán số (tạo mảng NumPy)
Trang 1212 seaborn (sns): Dùng cho tạo trực quan hóa thống kê (tùy chọn, không sử dụng trong đoạn code này)
matplotlib.pyplot (plt): Dùng cho tạo các biểu đồ khác nhau (tùy chọn, không sử dụng trong đoạn code này)
LinearRegression từ sklearn.linear_model: Dùng cho xây dựng mô hình hồi quy tuyến tính (không sử dụng trong đoạn code này)
train_test_split từ sklearn.model_selection: Dùng cho chia dữ liệu thành tập huấn luyện và kiểm thử (không sử dụng trong đoạn code này)
mean_squared_error và r2_score từ sklearn.metrics: Dùng cho đánh giá hiệu suất mô hình (không sử dụng trong đoạn code này)
2 Đọc dữ liệu : data2 = pd.read_csv('/users/linhtuanpham/Downloads/Housing.csv'): Đọc file CSV tại đường dẫn được chỉ định và lưu trữ dữ liệu trong một DataFrame data2 3 Dọn dẹp dữ liệu (Thay thế giá trị phân loại):
data2 = data2.replace({'yes': 1, 'no': 0}): Dòng này thay thế các giá trị cụ thể (ví dụ: "yes" và "no") trong một cột cụ thể (hoặc các cột) trong data2 bằng các giá trị số (1 và 0, tương ứng)
4 Lưu dữ liệu đã sửa đổi: data2.to_csv('/users/linhtuanpham/Downloads/Housing.csv')
Trang 1313
Giải thích code: 1 Xử lý Data:
data2 = data2.drop(columns=['Unnamed: 0', 'furnishingstatus']): Xóa hai cột:
'Unnamed: 0': cột chỉ mục được tạo tự động mà không có tên cụ thể 'furnishingstatus': Cột này biểu thị trạng thái trang trí của các đơn vị nhà ở (ví dụ: có trang trí, không trang trí)
Kết quả là một DataFrame data2mới loại trừ các cột này
2 Phân tích tương quan:
Tính toán ma trận tương quan corr2 để đánh giá độ mạnh và hướng của các mối quan hệ tuyến tính giữa các cột số trong data2
Trang 1515
Giải thích code:
1 Import thư viện: numpy (NumPy) for xử lý mảng dữ liệu pandas (Pandas) for đọc và thao tác với DataFrame matplotlib.pyplot (Matplotlib) for tạo biểu đồ LogisticRegression từ sklearn.linear_model for xây dựng mô hình hồi quy logistic
train_test_split từ sklearn.model_selection for chia dữ liệu thành tập huấn luyện và kiểm thử
accuracy_score từ sklearn.metrics for đánh giá độ chính xác của mô hình 2 Đọc dữ liệu:
Sử dụng pd.read_csv để đọc dữ liệu từ file CSV /users/linhtuanpham/Downloads/Housing.csv vào DataFrame data2
Trang 1616 3 Chuẩn bị dữ liệu cho mô hình: Nhóm chọn trích xuất cột 'price' làm dữ liệu đầu vào (feature) và cột 'mainroad'làm nhãn (label) cho mô hình Với mục tiêu xác định giá nhà cao hay thấp có ảnh hưởng tới việc nhà có mặt đường hay không
Lưu trữ các giá trị của các cột này vào các mảng NumPy X (dữ liệu đầu vào) và y(nhãn)
Sử dụng train_test_split để chia ngẫu nhiên dữ liệu thành tập huấn luyện (dùng để huấn luyện mô hình) và tập kiểm thử (dùng để đánh giá mô hình) Tỉ lệ chia là 80% tập huấn luyện và 20% tập kiểm thử, seed random_state=42 đảm bảo tính khả năng lặp lại khi chia ngẫu nhiên
4 Xây dựng và huấn luyện mô hình: Khởi tạo mô hình LogisticRegression từ thư viện sklearn Sử dụng model.fit(X_train, y_train) để huấn luyện mô hình trên dữ liệu tập huấn luyện X_train và nhãn y_train Quá trình huấn luyện giúp mô hình học mối quan hệ giữa dữ liệu đầu vào (giá cả) và nhãn (có nằm trên đường chính hay không) 5 Dự đoán:
Sử dụng model.predict(X_test) để dự đoán nhãn cho các mẫu dữ liệu trong tập kiểm thử X_test Mục đích
6 Đánh giá mô hình: Sử dụng accuracy_score(y_test, y_pred) để tính toán độ chính xác của mô hình Kết quả được lưu trữ trong biến accuracy In ra độ chính xác với hai chữ số thập phân
7 Vẽ đồ thị:
Trang 1717 Tạo biểu đồ để trực quan hóa kết quả
Trục hoành (X) thể hiện giá cả Trục tung (Y) thể hiện có nằm trên đường chính (1: Có, 0: Không) Các điểm đen (color='black') biểu diễn dữ liệu thực tế (y_test) Các điểm đỏ với dấu x (color='red', marker='x') biểu diễn kết quả dự đoán của mô hình (y_pred)
Tiêu đề: Logistic Regression: Price vs Mainroad
8 Hiển thị đồ thị:
Sử dụng plt.show() để hiển thị biểu đồ vừa tạo
Trang 1818 Nhận xét: Đối với các mức giá nhà trong dataset này, tất cả các kết quả dự đoán của Logistic Regression đều đưa ra là nhà có mặt đường Độ chính xác của mô hình là 86%
III K-Nearest Neighbor
Nhập module pyplot từ thư viện matplotlib, được sử dụng để tạo các biểu đồ tĩnh Hai danh sách x và được tạo để lưu trữ tọa độ x và tọa độ y của các điểm dữ liệu ytương ứng Mỗi cặp (x[i], y[i]) đại diện cho một điểm dữ liệu
Một danh sách classes được tạo để lưu trữ nhãn lớp cho mỗi điểm dữ liệu Trong trường hợp này, có hai lớp được biểu diễn bởi 0 và 1
Trang 1919 Hàm plt.scatter được sử dụng để tạo biểu đồ scatter Các tham số x và y cung cấp tọa độ của các điểm dữ liệu, và tham số c=classesđặt màu của mỗi điểm theo nhãn lớp của nó
Hình ảnh hiển thị một biểu đồ scatter với các điểm dữ liệu có tọa độ x và y khác nhau, được tô màu dựa trên nhãn lớp của chúng
Điểm có nhãn lớp 0: Các điểm này được tô màu tối (màu tím) Điểm có nhãn lớp 1: Các điểm này được tô màu sáng (màu vàng)
Biểu đồ này giúp dễ dàng nhìn thấy sự phân bố của các điểm dữ liệu theo hai lớp khác nhau trong không gian hai chiều, có thể nhận thấy các cụm điểm dữ liệu có nhãn lớp giống nhau thường tập trung gần nhau
Trang 2020 Tạo một danh sách các cặp giá trị (x, y) bằng cách sử dụng hàm zip Mỗi cặp đại diện cho tọa độ của một điểm dữ liệu
Khởi tạo một đối tượng KNeighborsClassifier với tham số n_neighbors=4, nghĩa là số lượng hàng xóm gần nhất cần xem xét là 4 Khi mô hình cần phân loại một điểm mới, nó sẽ tìm 4 điểm gần nhất và quyết định nhãn lớp dựa trên đa số của những điểm này
Huấn luyện mô hình KNN bằng cách sử dụng dữ liệu (data) và các nhãn lớp (classes) Hàm fit sẽ học cách phân loại các điểm dữ liệu dựa trên thông tin đã cung cấp.j
Định nghĩa tọa độ x và y của điểm dữ liệu mới và lưu chúng vào danh sách new_point.Sử dụng mô hình KNN đã huấn luyện (knn) để dự đoán nhãn lớp cho điểm dữ liệu mới Kết quả dự đoán được lưu trong biến prediction
Trang 2121 ● x + [new_x] và y + [new_y] thêm tọa độ của điểm mới vào các danh sách tọa
độ x và y hiện tại ● classes + [prediction[0]] thêm nhãn lớp dự đoán của điểm mới vào danh sách
nhãn lớp hiện tại ● Hàm plt.scatter vẽ biểu đồ scatter với các điểm dữ liệu hiện tại và điểm mới,
mỗi điểm được tô màu theo nhãn lớp của nó Thêm một chú thích vào biểu đồ, chỉ ra vị trí của điểm mới và nhãn lớp của nó
Biểu đồ scatter sẽ hiển thị tất cả các điểm dữ liệu ban đầu cùng với điểm mới tại tọa độ (71, 60), được tô màu theo nhãn lớp dự đoán của nó Chú thích sẽ cho biết vị trí và nhãn lớp của điểm mới
Trang 2222 Biểu đồ scatter sẽ hiển thị tất cả các điểm dữ liệu ban đầu cùng với điểm mới tại tọa độ (72, 60), được tô màu theo nhãn lớp dự đoán của nó Chú thích sẽ cho biết vị trí và nhãn lớp của điểm mới ó C thể thấy, chỉ cần di chuyển giá trị của x đi 1 đơn vị thì kết quả hân p lớp thay sẽ đổi
Trang 2424 Nhận xét: MSE đại diện cho mức độ sai lệch trung bình giữa các giá trị dự đoán và các giá trị thực tế trong mô hình hồi quy Với MSE lớn như vậycho thấy mô hình này đang có một mức độ sai lệch rất lớn giữa dự đoán và giá trị thực tế Do đó mô hình hồi quy của SVM không phù hợp với dataframe này Lý do có thể bởi SVM hoạt động hiệu quả với dữ liệu phi tuyến tính