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 = FALSE và include.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
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_durationtừtrack_metadata_tbl.- Chọn các trường
durationvàartist_familiarity. - Dùng
ft_quantile_discretizer()để tạo trường mớiduration_bintừ 5 bin theo quantile củaduration. - Thu thập kết quả bằng
collect(). - Chuyển trường
duration_binthành factor với nhãnduration_labels.
- Chọn các trường
- Vẽ biểu đồ hộp
ggplot()củaartist_familiaritytheoduration_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ậnduration_binvàartist_familiarityđặt trongaes(). - Thêm
geom_boxplot()để vẽ các hộp.
- Đối số đầu tiên của
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(___, ___)) +
___()