Sürekli değişkenleri mantıksal (logical) değişkenlere dönüştürme
Mantıksal (logical) değişkenler güzeldir, çünkü çoğu zaman sayılardan ziyade "evet ya da hayır" olarak düşünmek daha kolaydır. Örneğin biri sana "Bir fincan çay ister misin?" diye sorduğunda, "Bir fincan çay isteme olasılığım 0.73" demektense evet ya da hayır demek daha uygundur. Bunun gerçek veri bilimi uygulamaları da var. Örneğin, diyabet testi bir hastanın plazma glukoz konsantrasyonunu bir sayı olarak verebilir. Asıl önemsediğin soru "Hastada diyabet var mı?" olduğu için, bu sayıyı bir eşik değere göre mantıksal bir değere dönüştürmen gerekir.
Base R'de bu oldukça basittir, şöyle yapılır:
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
Tüm sparklyr özellik dönüştürme fonksiyonlarının kullanıcı arayüzü benzerdir. İlk üç argüman her zaman bir Spark tibble'ı, giriş sütununun adını belirten bir string ve çıkış sütununun adını belirten bir string'dir. Yani şu deseni izlerler.
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
Sürekli bir değişkeni mantıksala dönüştürmenin sparklyr yolu ft_binarizer() kullanmaktır. Yukarıdaki diyabet örneği aşağıdaki gibi yeniden yazılabilir. Eşik değerinin veri kümesindeki bir sütuna atıfta bulunan bir string değil, bir sayı olması gerektiğine dikkat et.
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
Spark'ın her yerde DoubleType kullanma felsefesine uygun olarak, ft_binarizer() çıktısı aslında mantıksal değil; numeric türündedir. Bu, Spark içinde çalışmaya ve başka dönüşümler yapmaya devam etmen için doğru bir yaklaşımdır; ancak veriyi R'de işlemek istersen, veriyi açıkça mantıksala dönüştürmeyi unutmamalısın. Aşağıdaki, yaygın bir kod desenidir.
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
Bu egzersizde, veri kümesi oluşturulduğu sırada sanatçının medyadaki yankısını ölçen, ismi pek de hoş olmayan artist_hotttnesss alanını ele alıyoruz. ggplot2 paketiyle grafik çizme hakkında daha fazla bilgi almak istersen, Introduction to Data Visualization with ggplot2 kursunu inceleyebilirsin.
Bu egzersiz, kursun bir parçasıdır
R ile sparklyr kullanarak Spark’a Giriş
Egzersiz talimatları
spark_conn olarak bir Spark bağlantısı senin için oluşturuldu. Spark'ta saklanan parçaya ait parça meta verilerine bağlı bir tibble track_metadata_tbl olarak önceden tanımlandı.
track_metadata_tbl'denhotttnesssadlı bir değişken oluştur.artist_hotttnesssalanını seç.ft_binarizer()kullanarak,artist_hotttnesss0.5'ten büyük olduğunda true olanis_hottt_or_notttadlı yeni bir alan oluştur.- Sonucu topla (collect).
is_hottt_or_notttalanını mantıksala dönüştür.
is_hottt_or_notttiçin birggplot()çubuk grafiği çiz.ggplot()fonksiyonunun ilk argümanı veri argümanı olanhotttnesss.ggplot()fonksiyonunun ikinci argümanı,aes()içine alınmışis_hottt_or_notttestetiğidir.- Çubukları çizmek için
geom_bar()ekle.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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(___)) +
___()