Xây dựng mô hình dự đoán bằng hồi quy logic trên Kaggle

Kaggle là một nền tảng thi đấu phân tích dữ liệu, nơi các nhà khoa học dữ liệu có thể giải quyết các bài toán được đặt ra bởi doanh nghiệp hoặc nhà nghiên cứu. Trong bài viết này, chúng ta sẽ xây dựng một mô hình dự đoán tình trạng sống còn của hành khách trên con tàu Titanic sử dụng thuật toán Hồi quy Logic.

1. Tổng quan về vấn đề Titanic

Vấn đề Titanic yêu cầu chúng ta dự đoán xem hành khách nào đã sống sót sau thảm họa chìm tàu. Tập dữ liệu bao gồm thông tin cá nhân của hành khách và tình trạng sống sót của họ. Đây là một bài toán phân loại nhị phân, phù hợp để áp dụng phương pháp hồi quy logic.

2. Khám phá dữ liệu

Tập dữ liệu bao gồm hai file CSV: train.csv và test.csv. Dưới đây là đoạn mã để đọc dữ liệu:


import pandas as pd
import numpy as np

data_train = pd.read_csv("Train.csv")
data_test = pd.read_csv("Test.csv")

print(data_train.info())

Dữ liệu chứa các thuộc tính như PassengerId, Pclass (hạng ghế), Sex (giới tính), Age (tuổi), v.v. Một số cột có giá trị bị thiếu, chẳng hạn như Age và Cabin.

3. Phân tích mối quan hệ giữa các biến

Chúng ta cần tìm hiểu mối liên hệ giữa các biến đầu vào và biến mục tiêu (Survived). Sử dụng thư viện matplotlib để vẽ biểu đồ:


import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 6))
plt.subplot2grid((2, 3), (0, 0))
data_train.Survived.value_counts().plot(kind='bar', color=['blue', 'orange'])
plt.title("Tình trạng sống sót")
plt.ylabel("Số lượng")

plt.subplot2grid((2, 3), (0, 1))
data_train.Pclass.value_counts().plot(kind='bar', color=['green', 'red', 'purple'])
plt.title("Phân bố hạng ghế")
plt.ylabel("Số lượng")

plt.show()

Từ biểu đồ, chúng ta nhận thấy rằng hành khách nữ và hành khách ở hạng ghế cao cấp có tỷ lệ sống sót cao hơn.

4. Tiền xử lý dữ liệu

Để chuẩn bị dữ liệu cho mô hình hồi quy logic, chúng ta cần thực hiện các bước sau:

  • Điền giá trị thiếu cho cột Age bằng phương pháp trung bình di động.
  • Chuyển đổi các biến danh mục (như Sex và Embarked) thành dạng số.
  • Loại bỏ các cột không cần thiết.

from sklearn.preprocessing import LabelEncoder

# Điền giá trị thiếu cho Age
data_train['Age'].fillna(data_train['Age'].mean(), inplace=True)

# Chuyển đổi biến danh mục
le_sex = LabelEncoder()
data_train['Sex'] = le_sex.fit_transform(data_train['Sex'])

# Loại bỏ cột không cần thiết
data_train.drop(['Name', 'Ticket', 'Cabin'], axis=1, inplace=True)

5. Xây dựng mô hình hồi quy logic

Sử dụng thư viện scikit-learn để tạo mô hình:


from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

X = data_train.drop('Survived', axis=1)
y = data_train['Survived']

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

model = LogisticRegression()
model.fit(X_train, y_train)

score = model.score(X_val, y_val)
print(f"Độ chính xác của mô hình: {score}")

6. Tối ưu hóa mô hình

Các bước tối ưu hóa bao gồm:

  • Phân tích hệ số của mô hình để hiểu tầm quan trọng của từng biến.
  • Áp dụng cross-validation để đánh giá hiệu suất của mô hình.
  • Thử nghiệm thêm các đặc trưng mới (feature engineering).

from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, X, y, cv=5)
print(f"Kết quả cross-validation: {scores.mean()}")

7. Kết luận

Bằng cách áp dụng hồi quy logic và tối ưu hóa mô hình, chúng ta đã đạt được kết quả tốt trên tập kiểm tra. Các kỹ thuật feature engineering và cross-validation đóng vai trò quan trọng trong việc cải thiện độ chính xác.

Thẻ: python Pandas logistic-regression

Đăng vào ngày 2 tháng 7 lúc 14:12