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

Chuyển đổi biến liên tục thành biến phân loại (2)

Một trường hợp đặc biệt của phép biến đổi trước đó là cắt một biến liên tục thành các “bucket” được xác định bởi các quantile của biến. Cách dùng phổ biến là phân tích câu trả lời khảo sát hoặc điểm đánh giá. Khi bạn yêu cầu người dùng chấm từ một đến năm sao, đáp án trung vị không phải lúc nào cũng là ba sao. Khi đó, chia điểm theo các quantile có thể hữu ích. Ví dụ, bạn có thể tạo năm nhóm “quintile” bằng cách chia tại các mốc phần trăm 0, 20, 40, 60, 80 và 100.

Cách làm trong base R là kết hợp cut() + quantile(). Tương đương trong sparklyr là phép biến đổi ft_quantile_discretizer(). Hàm này nhận đối số num_buckets để xác định số lượng bucket. Cách tính trong base R và sparklyr được minh họa cùng nhau. Như trước, right = FALSEinclude.lowest được thiết lập.

survey_response_group <- cut(
  survey_score,
  breaks = quantile(survey_score, c(0, 0.25, 0.5, 0.75, 1)),
  labels = c("hate it", "dislike it", "like it", "love it"),
  right  = FALSE,
  include.lowest = TRUE
)
survey_data %>%
  ft_quantile_discretizer("survey_score", "survey_response_group", num_buckets = 4)

Tương tự như ft_bucketizer(), các bin thu được là các số, đếm từ 0. Nếu bạn muốn làm việc với chúng trong R, hãy chuyển rõ ràng sang factor.

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

Nhập môn Spark với sparklyr trong R

Xem khóa học

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

Kết nối Spark đã được tạo sẵn dưới tên spark_conn. Một tibble gắn với metadata của bản nhạc được lưu trong Spark đã được định nghĩa trước là track_metadata_tbl. duration_labels là một vector ký tự mô tả các khoảng thời lượng.

  • Tạo biến tên familiarity_by_duration từ track_metadata_tbl.
    • Chọn các trường durationartist_familiarity.
    • Dùng ft_quantile_discretizer() để tạo trường mới duration_bin từ 5 bin theo quantile của duration.
    • Thu thập kết quả bằng collect().
    • Chuyển trường duration_bin thành factor với nhãn duration_labels.
  • Vẽ biểu đồ hộp ggplot() của artist_familiarity theo duration_bin.
    • Đối số đầu tiên của ggplot() là dữ liệu, familiarity_by_duration.
    • Đối số thứ hai của ggplot() là thẩm mỹ (aesthetic), nhận duration_binartist_familiarity đặt trong aes().
    • Thêm geom_boxplot() để vẽ các hộ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.

# track_metadata_tbl, duration_labels have been pre-defined
track_metadata_tbl
duration_labels

familiarity_by_duration <- track_metadata_tbl %>%
  # Select duration and artist_familiarity
  ___ %>%
  # Bucketize duration
  ___ %>%
  # Collect the result
  ___ %>%
  # Convert duration bin to factor
  ___

# Draw a boxplot of artist_familiarity by duration_bin
ggplot(___, aes(___, ___)) +
  ___()  
Chỉnh sửa và Chạy Mã