การแปลงตัวแปรต่อเนื่องให้เป็น logical
ตัวแปร logical มีประโยชน์มาก เพราะมักคิดในเชิง "ใช่หรือไม่ใช่" ได้ง่ายกว่าการคิดในเชิงตัวเลข ตัวอย่างเช่น ถ้ามีคนถามว่า "ต้องการชาสักแก้วไหม?" การตอบแบบ ใช่ หรือ ไม่ใช่ ย่อมสะดวกกว่าการบอกว่า "มีโอกาส 0.73 ที่จะต้องการชา" แนวคิดนี้นำไปใช้ในงาน Data Science ได้จริง เช่น การตรวจวินิจฉัยโรคเบาหวานอาจให้ผลเป็นค่าความเข้มข้นกลูโคสในพลาสมาเลือดของผู้ป่วยเป็นตัวเลข แต่สิ่งที่ต้องการทราบจริงๆ คือ "ผู้ป่วยเป็นเบาหวานหรือไม่?" ดังนั้นจึงต้องแปลงตัวเลขนั้นให้เป็นค่า logical โดยอิงจาก threshold ที่กำหนด
ใน R พื้นฐาน ทำได้ค่อนข้างง่าย ดังนี้
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
ฟังก์ชัน feature transformation ทั้งหมดใน sparklyr มี interface ที่คล้ายกัน อาร์กิวเมนต์สามตัวแรกจะเป็น Spark tibble, สตริงที่ระบุชื่อคอลัมน์อินพุต, และสตริงที่ระบุชื่อคอลัมน์เอาต์พุตเสมอ กล่าวคือ ทุกฟังก์ชันเป็นไปตามรูปแบบนี้
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
วิธีแปลงตัวแปรต่อเนื่องให้เป็น logical ใน sparklyr ใช้ ft_binarizer() ตัวอย่างโรคเบาหวานก่อนหน้านี้สามารถเขียนใหม่ได้ดังนี้ โปรดทราบว่าค่า threshold ต้องเป็นตัวเลข ไม่ใช่สตริงที่อ้างอิงชื่อคอลัมน์ในชุดข้อมูล
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
ตามแนวทางของ Spark ที่ใช้ DoubleType ทุกที่ ผลลัพธ์จาก ft_binarizer() จะไม่ใช่ค่า logical จริงๆ แต่เป็น numeric วิธีนี้เหมาะสำหรับการทำงานต่อใน Spark และแปลงข้อมูลเพิ่มเติม แต่ถ้าต้องการนำข้อมูลมาประมวลผลใน R จะต้องแปลงข้อมูลให้เป็น logical อย่างชัดเจน รูปแบบโค้ดที่พบบ่อยมีดังนี้
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
แบบฝึกหัดนี้ใช้ฟิลด์ artist_hotttnesss ซึ่งเป็นค่าวัดระดับความเป็นที่พูดถึงของศิลปินในสื่อต่างๆ ณ ช่วงเวลาที่สร้างชุดข้อมูล หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างกราฟด้วยแพ็กเกจ ggplot2 สามารถเรียนได้ที่คอร์ส Introduction to Data Visualization with ggplot2
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
มีการสร้าง Spark connection ไว้ให้แล้วในชื่อ spark_conn และ tibble ที่เชื่อมต่อกับข้อมูล track metadata ที่เก็บใน Spark ได้ถูกกำหนดไว้ล่วงหน้าในชื่อ track_metadata_tbl
- สร้างตัวแปรชื่อ
hotttnesssจากtrack_metadata_tbl- เลือกฟิลด์
artist_hotttnesss - ใช้
ft_binarizer()เพื่อสร้างฟิลด์ใหม่ชื่อis_hottt_or_notttซึ่งมีค่าเป็น true เมื่อartist_hotttnesssมากกว่า 0.5 - ดึงผลลัพธ์ด้วย collect()
- แปลงฟิลด์
is_hottt_or_notttให้เป็น logical
- เลือกฟิลด์
- สร้างกราฟแท่ง
ggplot()ของis_hottt_or_nottt- อาร์กิวเมนต์แรกของ
ggplot()คืออาร์กิวเมนต์ข้อมูล ได้แก่hotttnesss - อาร์กิวเมนต์ที่สองของ
ggplot()คือ aesthetic โดยใส่is_hottt_or_notttภายในaes() - เพิ่ม
geom_bar()เพื่อวาดแท่งกราฟ
- อาร์กิวเมนต์แรกของ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# track_metadata_tbl has been pre-defined
track_metadata_tbl
hotttnesss <- track_metadata_tbl %>%
# Select artist_hotttnesss
___ %>%
# Binarize to is_hottt_or_nottt
___ %>%
# Collect the result
___ %>%
# Convert is_hottt_or_nottt to logical
___
# Draw a barplot of is_hottt_or_nottt
ggplot(___, aes(___)) +
___()