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

Loại bỏ cột có ít quan sát

Sau khi thực hiện nhiều bước feature engineering, tốt nhất bạn nên dừng lại một chút để xem mình đã tạo ra những gì. Nếu bạn dùng các kỹ thuật tự động cho biến phân loại như exploding hoặc OneHot Encoding, có thể giờ đây bạn có hàng trăm biến nhị phân mới. Chủ đề chọn đặc trưng (feature selection) đủ để làm thành một khóa học khác, nhưng vẫn có vài bước nhanh giúp bạn giảm số chiều của bộ dữ liệu.

Trong bài tập này, chúng ta sẽ loại bỏ các cột có ít hơn 30 quan sát. Con số 30 thường được coi là mức tối thiểu để có ý nghĩa thống kê. Ít hơn mức đó, các mối quan hệ rất dễ dẫn đến overfitting chỉ vì sự trùng hợp!

LƯU Ý: Dữ liệu có sẵn trong dataframe df.

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

Feature Engineering với PySpark

Xem khóa học

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

  • Dùng vòng lặp for đã cung cấp để duyệt qua danh sách các cột nhị phân, tính sum của các giá trị trong cột bằng hàm agg. Dùng collect() để thực thi tính toán ngay và lưu kết quả vào obs_count.
  • So sánh obs_count với obs_threshold, câu lệnh if sẽ đúng khi obs_count nhỏ hơn hoặc bằng obs_threshold.
  • Xóa các cột đã được thêm vào danh sách cols_to_remove bằng cách dùng drop(). Nhớ rằng dấu * cho phép mở gói danh sách.
  • In kích thước ban đầu và cuối cùng của các dataframe PySpark bằng cách dùng count() cho số bản ghi và len() trên df.columns hoặc new_df.columns để tìm số cột.

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.

obs_threshold = 30
cols_to_remove = list()
# Inspect first 10 binary columns in list
for col in binary_cols[0:10]:
  # Count the number of 1 values in the binary column
  obs_count = df.____({col: ____}).____()[0][0]
  # If less than our observation threshold, remove
  if ____ ____ ____:
    cols_to_remove.append(col)
    
# Drop columns and print starting and ending dataframe shapes
new_df = df.____(*____)

print('Rows: ' + str(df.____()) + ' Columns: ' + str(____(df.____)))
print('Rows: ' + str(new_df.____()) + ' Columns: ' + str(____(new_df.____)))
Chỉnh sửa và Chạy Mã