Bắt đầu ngayBắt đầu miễn phí

Mã hóa cột phân loại I: LabelEncoder

Bây giờ bạn đã thấy cần làm gì để chuẩn bị dữ liệu nhà ở cho XGBoost, hãy đi qua quy trình từng bước.

Trước tiên, bạn sẽ cần điền giá trị khuyết — như đã thấy, cột LotFrontage có khá nhiều giá trị thiếu. Tiếp theo, bạn cần mã hóa mọi cột phân loại trong tập dữ liệu bằng one-hot encoding để chúng được biểu diễn dưới dạng số. Bạn có thể xem video này từ khóa học Supervised Learning with scikit-learn để ôn lại ý tưởng.

Dữ liệu có năm cột phân loại: MSZoning, PavedDrive, Neighborhood, BldgTypeHouseStyle. Scikit-learn có hàm LabelEncoder chuyển các giá trị trong mỗi cột phân loại thành số nguyên. Bạn sẽ thực hành sử dụng công cụ này tại đây.

Bài tập này là một phần của khóa học

Gradient Boosting Cực Mạnh với XGBoost

Xem khóa học

Hướng dẫn bài tập

  • Import LabelEncoder từ sklearn.preprocessing.
  • Điền các giá trị thiếu trong cột LotFrontage bằng 0 với .fillna().
  • Tạo một mặt nạ boolean cho các cột phân loại. Bạn có thể làm điều này bằng cách kiểm tra df.dtypes có bằng object hay không.
  • Tạo một đối tượng LabelEncoder. Bạn có thể khởi tạo theo cách tương tự như bất kỳ estimator nào của scikit-learn.
  • Mã hóa tất cả các cột phân loại thành số nguyên bằng LabelEncoder(). Để làm điều này, hãy dùng phương thức .fit_transform() của le trong hàm lambda đã cung cấp.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
Chỉnh sửa và Chạy Mã