Final Proje Ödevi
Spaceship Titanic
Hoş geldiniz, 2912 yılına! Veri bilimi becerileriniz bu kozmik gizemi çözmek için gerekiyor gibi görünüyor. Dört ışık yılı uzaklıktan bir ileti aldık ve durum pek iç açıcı değil.
Uzay Gemisi Titanik, bir ay önce fırlatılan yıldızlararası bir yolcu gemisiydi. Yaklaşık 13.000 yolcu bulunan gemi, güneş sistemimizden göçmenleri yakın yıldızların yörüngesinde bulunan üç yeni yaşanabilir dış gezegene taşımak üzere ilk yolculuğuna çıktı.
Dikkatsiz Uzay Gemisi Titanic, ilk varış noktası olan kavurucu 55 Cancri E’ye giderken Alpha Centauri’yi dönerken, bir toz bulutunun içine gizlenmiş bir uzay-zaman anormalliğiyle çarpıştı. Ne yazık ki 1000 yıl öncesindeki adaşı ile benzer bir kaderle karşılaştı. Gemi sağlam kalmasına rağmen yolcuların neredeyse yarısı alternatif bir boyuta taşındı!
File and Data Field Descriptions
train.csv - Eğitim verisi olarak kullanılacak yaklaşık üçte ikisi (~8700) yolcunun kişisel kayıtları. PassengerId - Her yolcu için benzersiz bir kimlik. Her kimlik, gggg_pp biçiminde olup, gggg, yolcu ile seyahat eden grubu gösterir ve pp grup içindeki sıralarını belirtir. Bir gruptaki insanlar genellikle aile üyeleri olabilir, ancak her zaman değil.
HomePlanet - Yolcunun hareket ettiği gezegen, genellikle kalıcı ikamet gezegenidir.
CryoSleep - Yolcunun seyahat süresince süspansiyon animasyonuna girmeyi seçip seçmediğini belirtir. CryoSleep’teki yolcular kabinlerine kapatılır.
Cabin - Yolcunun konakladığı kabin numarası. deck/num/side biçiminde olup, side Port için P veya Starboard için S olabilir.
Destination - Yolcunun iniş yapacağı gezegen.
Age - Yolcunun yaşı.
VIP - Yolcunun seyahat süresince özel VIP hizmeti için ödeme yapıp yapmadığını belirtir.
RoomService, FoodCourt, ShoppingMall, Spa, VRDeck - Yolcunun Spaceship Titanic’in birçok lüks olanaklarında her birinde ne kadar harcama yaptığını belirtir.
Name - Yolcunun adı ve soyadı.
Transported - Yolcunun başka bir boyuta taşınıp taşınmadığını belirten hedef, tahmin etmeye çalıştığınız sütun.
test.csv - Test verisi olarak kullanılacak geri kalan üçte biri (~4300) yolcunun kişisel kayıtları. Göreviniz, bu setteki yolcuların Transported değerini tahmin etmektir.
sample_submission.csv - Doğru formatta bir gönderi dosyası.
PassengerId - Test setindeki her yolcu için bir kimlik.
Transported - Hedef. Her yolcu için True veya False tahmin edin.
##Dataset Description
Bu yarışmada göreviniz, Spaceship Titanic’in uzay-zaman anomalisi ile çarpışması sırasında bir yolcunun alternatif bir boyuta taşınıp taşınmadığını tahmin etmektir. Bu tahminleri yapmanıza yardımcı olmak için, geminin hasar görmüş bilgisayar sisteminden kurtarılan kişisel kayıtların bir seti verilmiştir.
Download Data
## Rows: 8693 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Cabin, Destination, Name
## dbl (6): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck
## lgl (3): CryoSleep, VIP, Transported
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 4277 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Cabin, Destination, Name
## dbl (6): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck
## lgl (2): CryoSleep, VIP
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Kodun amacı, CSV dosyasını bir dataframe’e dönüştürmektir, böylece R’da daha kolay işlenebilir ve analiz edilebilir. Hata mesajı, dosyanın bulunamadığını veya okunamadığını gösterir, bu yüzden dosyanın mevcut olup olmadığını ve doğru dizinde olup olmadığını kontrol etmek gereklidir.
## Rows: 4277 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): PassengerId
## lgl (1): Transported
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Kod, ‘readr’ paketini yükler ve ‘sample_submission.csv’ isimli bir CSV dosyasını okur
## spc_tbl_ [8,693 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ PassengerId : chr [1:8693] "0001_01" "0002_01" "0003_01" "0003_02" ...
## $ HomePlanet : chr [1:8693] "Europa" "Earth" "Europa" "Europa" ...
## $ CryoSleep : logi [1:8693] FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ Cabin : chr [1:8693] "B/0/P" "F/0/S" "A/0/S" "A/0/S" ...
## $ Destination : chr [1:8693] "TRAPPIST-1e" "TRAPPIST-1e" "TRAPPIST-1e" "TRAPPIST-1e" ...
## $ Age : num [1:8693] 39 24 58 33 16 44 26 28 35 14 ...
## $ VIP : logi [1:8693] FALSE FALSE TRUE FALSE FALSE FALSE ...
## $ RoomService : num [1:8693] 0 109 43 0 303 0 42 0 0 0 ...
## $ FoodCourt : num [1:8693] 0 9 3576 1283 70 ...
## $ ShoppingMall: num [1:8693] 0 25 0 371 151 0 3 0 17 0 ...
## $ Spa : num [1:8693] 0 549 6715 3329 565 ...
## $ VRDeck : num [1:8693] 0 44 49 193 2 0 0 NA 0 0 ...
## $ Name : chr [1:8693] "Maham Ofracculy" "Juanna Vines" "Altark Susent" "Solam Susent" ...
## $ Transported : logi [1:8693] FALSE TRUE FALSE FALSE TRUE TRUE ...
## - attr(*, "spec")=
## .. cols(
## .. PassengerId = col_character(),
## .. HomePlanet = col_character(),
## .. CryoSleep = col_logical(),
## .. Cabin = col_character(),
## .. Destination = col_character(),
## .. Age = col_double(),
## .. VIP = col_logical(),
## .. RoomService = col_double(),
## .. FoodCourt = col_double(),
## .. ShoppingMall = col_double(),
## .. Spa = col_double(),
## .. VRDeck = col_double(),
## .. Name = col_character(),
## .. Transported = col_logical()
## .. )
## - attr(*, "problems")=<externalptr>
Kod, ‘train’ isimli verinin yapısını inceler.
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ purrr 1.0.2
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Bu kod, tidyverse paketini yüklemek için kullanılan R komutudur. tidyverse, veri bilimi için modern, konsolide bir araç seti sağlayan, ggplot2, dplyr, tidyr, readr gibi çeşitli R paketlerini içeren bir paket koleksiyonudur. Bu paketler, veri manipülasyonu, analizi ve görselleştirmesi için geniş fonksiyonlar sunar ve R’da veri analizi iş akışlarını kolaylaştırır.
Bu kod, “explore” adında bir kütüphaneyi yüklemek için kullanılır, muhtemelen R programlama dilinde. “explore” bir paket veya kullanıcı tanımlı bir modül olabilir.
## # A tibble: 14 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet chr 201 2.3 4 NA NA NA
## 3 CryoSleep lgl 217 2.5 3 0 0.36 1
## 4 Cabin chr 199 2.3 6561 NA NA NA
## 5 Destination chr 182 2.1 4 NA NA NA
## 6 Age dbl 179 2.1 81 0 28.8 79
## 7 VIP lgl 203 2.3 3 0 0.02 1
## 8 RoomService dbl 181 2.1 1274 0 225. 14327
## 9 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 10 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 11 Spa dbl 183 2.1 1328 0 311. 22408
## 12 VRDeck dbl 188 2.2 1307 0 305. 24133
## 13 Name chr 200 2.3 8474 NA NA NA
## 14 Transported lgl 0 0 2 0 0.5 1
Train
Bu kod parçası, train adlı bir veri çerçevesindeki PassengerId sütununu alt çizgi karakterine göre iki parçaya ayırır ve sonuçları train veri çerçevesinin ailenum ve ailsira isimli yeni sütunlarına atar. Bu işlem, bir kimlik numarasının içindeki farklı bileşenleri ayırmak ve bunları ayrı sütunlarda saklamak için kullanılır.
Test
Bu kod, test1_ veri çerçevesindeki PassengerId sütunundaki değerleri alt çizgi (“_“) karakterine göre iki parçaya ayırıp, sonuçları test1 veri çerçevesinin ailenum ve ailsira isimli iki yeni sütununa kaydeder.
Kod, train veri çerçevesindeki cabin sütununu eğik çizgi (“/”) ile üç parçaya böler ve bu parçaları deck, num, ve side isimli yeni sütunlara kaydeder.
Bu R kodu, ‘cabin’ adlı sütundaki verileri ‘/’ işaretine göre üç parçaya bölüp ‘test_1_’ veri çerçevesinde ‘deck’, ‘num’, ve ‘side’ adında üç yeni sütuna atar.
Bu R kodu, ‘train’ ve ‘test_1_’ veri çerçevelerindeki tüm boş (’’ yani hiçbir karakter içermeyen) değerleri NA (R’da kullanılan eksik veri değeri) ile değiştirir. Bu, genellikle veri temizleme sürecinde yapılır.
## # A tibble: 19 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet chr 201 2.3 4 NA NA NA
## 3 CryoSleep lgl 217 2.5 3 0 0.36 1
## 4 Cabin chr 199 2.3 6561 NA NA NA
## 5 Destination chr 182 2.1 4 NA NA NA
## 6 Age dbl 179 2.1 81 0 28.8 79
## 7 VIP lgl 203 2.3 3 0 0.02 1
## 8 RoomService dbl 181 2.1 1274 0 225. 14327
## 9 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 10 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 11 Spa dbl 183 2.1 1328 0 311. 22408
## 12 VRDeck dbl 188 2.2 1307 0 305. 24133
## 13 Name chr 200 2.3 8474 NA NA NA
## 14 Transported lgl 0 0 2 0 0.5 1
## 15 ailenum chr 0 0 6217 NA NA NA
## 16 ailesira chr 0 0 8 NA NA NA
## 17 deck chr 199 2.3 9 NA NA NA
## 18 num chr 199 2.3 1818 NA NA NA
## 19 side chr 199 2.3 3 NA NA NA
##
##
## processing file: report.rmd
##
|
| | 0%
|
|. | 2%
|
|.. | 5% [global_options]
|
|... | 7%
|
|.... | 10% [introduce]
|
|.... | 12%
|
|..... | 14% [plot_intro]
|
|...... | 17%
|
|....... | 19% [data_structure]
|
|........ | 21%
|
|......... | 24% [missing_profile]
|
|.......... | 26%
|
|........... | 29% [univariate_distribution_header]
|
|........... | 31%
|
|............ | 33% [plot_histogram]
|
|............. | 36%
|
|.............. | 38% [plot_density]
|
|............... | 40%
|
|................ | 43% [plot_frequency_bar]
|
|................. | 45%
|
|.................. | 48% [plot_response_bar]
|
|.................. | 50%
|
|................... | 52% [plot_with_bar]
|
|.................... | 55%
|
|..................... | 57% [plot_normal_qq]
|
|...................... | 60%
|
|....................... | 62% [plot_response_qq]
|
|........................ | 64%
|
|......................... | 67% [plot_by_qq]
|
|.......................... | 69%
|
|.......................... | 71% [correlation_analysis]
|
|........................... | 74%
|
|............................ | 76% [principal_component_analysis]
|
|............................. | 79%
|
|.............................. | 81% [bivariate_distribution_header]
|
|............................... | 83%
|
|................................ | 86% [plot_response_boxplot]
|
|................................. | 88%
|
|................................. | 90% [plot_by_boxplot]
|
|.................................. | 93%
|
|................................... | 95% [plot_response_scatterplot]
|
|.................................... | 98%
|
|.....................................| 100% [plot_by_scatterplot]
## output file: C:/Users/USER/Desktop/Final Proje Ödevi/report.knit.md
## "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/pandoc" +RTS -K512m -RTS "C:\Users\USER\Desktop\FINALP~1\REPORT~1.MD" --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc117c35569f6.html --lua-filter "C:\Users\USER\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\USER\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\latex-div.lua" --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template "C:\Users\USER\AppData\Local\R\win-library\4.3\rmarkdown\rmd\h\default.html" --no-highlight --variable highlightjs=1 --variable theme=yeti --mathjax --variable "mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" --include-in-header "C:\Users\USER\AppData\Local\Temp\RtmpOCjz99\rmarkdown-str117c5acc7ba9.html"
##
## Output created: report.html
Histogram
Bu histogramda, bir popülasyon içindeki yaş dağılımı gösteriliyor. En yüksek sütunlar 20-30 yaş aralığında yoğunlaşmış, bu da popülasyonun büyük bir kısmının bu yaş aralığında olduğunu gösteriyor. Veri seti genç yetişkinlere ait ve dağılım sağa çarpık; yani ortalamadan daha fazla genç yetişkin var ve yaş ilerledikçe kişi sayısı azalıyor.
Bar Chart (with frequency)
Bar grafikleri, belirli kategorik değişkenlerin frekanslarını gösteriyor. Her bir grafik, bir değişkene ait kategorilerin (veya seviyelerin) frekansını yani o kategoride kaç gözlem olduğunu göstermektedir. Grafiklerdeki “TRUE”, “FALSE” ve “NA” etiketleri bu kategorilerin değerlerini temsil ediyor olabilir. Örneğin, “HomePlanet” değişkeni için “Earth” kategorisinin en yüksek frekansa sahip olduğunu, “Mars” ve “Europa”nın daha az frekansa sahip olduğunu görüyoruz. “Transported” değişkeni için “TRUE” ve “FALSE” değerlerinin frekansları hemen hemen aynı gibi duruyor. “Destination” değişkeninde “55 Cancri e” ve “PSO J318.5-22” destinasyonları daha az sıklıkta, “TRAPPIST-1e” ise daha yüksek sıklıkta görülüyor.
Bazı değişkenlerde “NA” yani veri eksikliğini gösteren sütunlar da var; bu, o değişkende bazı gözlemlerin eksik olduğunu belirtir. “side” ve “deck” gibi değişkenlerde bu durum görülüyor.
Bu veri, muhtemelen bir anket veya bir uygulamanın veri setinden alınmış ve burada her bir değişkenin dağılımı incelenmektedir. Bu analiz, veri setindeki farklı kategorilerin dağılımını anlamak ve belki de eksik verileri veya dengesizlikleri belirlemek için kullanılıyor.
5 columns ignored with more than 50 categories. PassengerId: 8693 categories Cabin: 6561 categories Name: 8474 categories ailenum: 6217 categories num: 1818 categories
Missing Data Profile
Bir veri setindeki eksik veri profili gösteriliyor. Her bir çubuk, veri setindeki bir değişkene (sütuna) karşılık gelir ve çubuğun uzunluğu, o değişkendeki eksik veri sayısını temsil eder. Çubukların üzerindeki yüzdelik değerler, toplam veri içindeki eksik veri oranını gösterir. Bu grafik, hangi değişkenlerin en çok eksik veriye sahip olduğunu görselleştirir, böylece veri temizleme veya imputasyon işlemlerinde önceliklendirme yapmak için kullanılabilir. Örneğin, Cabin değişkeninin en fazla eksik veriye sahip olduğu ve yüzde olarak da en yüksek eksiklik oranına (yaklaşık %2,3) sahip olduğu görülüyor. Bu tür bir analiz, veri setinin kalitesini değerlendirmek ve veri ön işleme stratejilerini planlamak için önemlidir.
QQ Plot
Warning: Removed 155 rows containing non-finite values
(stat_qq()). Warning: Removed 155 rows containing
non-finite values (stat_qq_line()).
QQ grafikleri, bir veri setinin dağılımının belirli bir teorik dağılım (genellikle normal dağılım) ile karşılaştırılmasında kullanılır. Verilerin teorik dağılım ile ne kadar iyi örtüştüğünü görselleştirirler.
Her grafik, veri setindeki bir değişken için yapılmış ve normal dağılıma karşı verilerin kuantillerini karşılaştırıyor. Eğer veri noktaları çizginin etrafında düzenli bir şekilde yer alıyorsa, bu verinin normal dağılıma yakın olduğunu gösterir. Grafiklerdeki sapmalar, verinin normal dağılımdan ne şekilde farklılık gösterdiğini gösterir.
Grafiklerdeki verilerin birçoğu uç değerlere sahip gibi görünüyor (grafiğin uçlarında belirgin sapmalar mevcut). Bu, veri setindeki dağılımların ağır kuyruklar içerdiğini veya normal dağılımdan önemli ölçüde farklı olduğunu gösterebilir.
Üstte yer alan uyarı mesajı, QQ grafiği oluşturulurken 155 satırdaki sonlu olmayan değerlerin kaldırıldığını belirtir. Bu da analiz sırasında bu tür değerlerin dikkate alınmadığını gösterir.
Bu kod, ‘train’ veri çerçevesinden ‘Cabin’ sütununu kaldırır.
Bu kod, ‘test_1_’ veri çerçevesinden ‘Cabin’ sütununu kaldırır.
## [1] "Europa" "Earth" "Mars" NA
Bu kod, ‘train’ veri çerçevesindeki ‘HomePlanet’ sütununda bulunan benzersiz değerleri listeler.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet chr 201 2.3 4 NA NA NA
## 3 CryoSleep lgl 217 2.5 3 0 0.36 1
## 4 Destination chr 182 2.1 4 NA NA NA
## 5 Age dbl 179 2.1 81 0 28.8 79
## 6 VIP lgl 203 2.3 3 0 0.02 1
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side chr 199 2.3 3 NA NA NA
## NULL
Bu kod, ‘HomePlanet’ sütununun faktör seviyelerini listeler.
Bu kod, ‘train’ veri çerçevesinin ‘HomePlanet’ sütununda eksik değerleri (NA) faktör seviyelerine ekler.
Bu kod, ‘test_1_’ veri çerçevesinin ‘HomePlanet’ sütununda eksik değerleri (NA) faktör seviyelerine ekler.
## [1] "Earth" "Europa" "Mars" NA
Bu kod, ‘train’ veri çerçevesinin ‘HomePlanet’ sütunundaki faktör seviyelerini görüntüler.
Bu kod, ‘train’ veri çerçevesindeki ‘HomePlanet’ sütunundaki eksik faktör seviyelerini ‘NA’ metni ile doldurur.
Bu kod, ‘test_1_’ veri çerçevesindeki ‘HomePlanet’ sütunundaki eksik faktör seviyelerini ‘NA’ metni ile doldurur.
## [1] "Earth" "Europa" "Mars" "NA"
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep lgl 217 2.5 3 0 0.36 1
## 4 Destination chr 182 2.1 4 NA NA NA
## 5 Age dbl 179 2.1 81 0 28.8 79
## 6 VIP lgl 203 2.3 3 0 0.02 1
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side chr 199 2.3 3 NA NA NA
train <- train %>%
group_by(HomePlanet) %>%
mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))Bu kod ‘train’ veri çerçevesini ‘HomePlanet’ sütununa göre gruplandırır ve her grup için ‘Age’ sütunundaki NA (eksik) değerleri o grubun yaş ortalaması ile doldurur.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep lgl 217 2.5 3 0 0.36 1
## 4 Destination chr 182 2.1 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP lgl 203 2.3 3 0 0.02 1
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side chr 199 2.3 3 NA NA NA
Bu kod, ‘train’ veri çerçevesindeki ‘CryoSleep’ sütununun faktör seviyelerine ‘NA’ değerini ekler.
Bu kod, ‘test_1_’ veri çerçevesindeki ‘CryoSleep’ sütununun faktör seviyelerine ‘NA’ değerini ekler.
Bu kod, ‘train’ veri çerçevesindeki ‘CryoSleep’ sütununda, eğer ‘NA’ (eksik veri) bir kategori olarak tanımlanmamışsa, onu kategori olarak ekler.
Bu kod, ‘test_1_’ veri çerçevesindeki ‘CryoSleep’ sütununda, eğer ‘NA’ (eksik veri) bir kategori olarak tanımlanmamışsa, onu kategori olarak ekler.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination chr 182 2.1 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP lgl 203 2.3 3 0 0.02 1
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side chr 199 2.3 3 NA NA NA
## [1] "TRAPPIST-1e" "PSO J318.5-22" "55 Cancri e" NA
Bu kod, ‘train’ veri çerçevesindeki ‘Destination’ sütununda yer alan farklı yer adlarını listeler.
Bu kod, ‘train’ veri çerçevesindeki ‘Destination’ sütununa eksik değerlerin (NA) da bir kategori olarak eklenmesini sağlar.
Bu kod, ‘test_1_’ veri çerçevesindeki ‘Destination’ sütununa eksik değerlerin (NA) da bir kategori olarak eklenmesini sağlar.
Bu kod, ‘train’ veri çerçevesindeki ‘Side’ sütunundaki faktör seviyelerine ‘NA’ (eksik veri) değerini bir kategori olarak ekler.
Bu kod, ‘test_1_’ veri çerçevesindeki ‘Side’ sütunundaki faktör seviyelerine ‘NA’ (eksik veri) değerini bir kategori olarak ekler.
Bu kod, ‘train’ veri çerçevesinde ‘Side’ sütununda tanımlanmamış olan eksik değerleri, kategori listesine ‘NA’ olarak ekler.
Bu kod, ‘test_1_’ veri çerçevesinde ‘Side’ sütununda tanımlanmamış olan eksik değerleri, kategori listesine ‘NA’ olarak ekler
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP lgl 203 2.3 3 0 0.02 1
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
Kod, trainVIP adındaki bir veri kümesine eksik değerler ekliyor.
Kod, test_1_VIP adındaki bir veri kümesine eksik değerler ekliyor.
Bu kod, trainVIP isimli veri içindeki boş (NA) olan yerleri “NA” metni ile değiştiriyor. Yani, eğer bir bilgi eksikse, oraya “NA” yazıyor.
Bu kod parçası, test_l_SVIP adlı veri setindeki boş değerleri (NA) buluyor ve o değerleri “NA” yazısı ile değiştiriyor. Basitçe, veri setindeki eksik yerleri “NA” ile dolduruyor.
train <- train %>%
group_by(Destination) %>%
mutate_at(vars(RoomService), ~replace_na(.,mean(.,na.rm = TRUE)))Bu kod, train adlı veri setini ‘Destination’ değişkenine göre gruplara ayırıyor ve daha sonra ‘RoomService’ değişkenindeki eksik değerleri (NA), o grubun ‘RoomService’ ortalaması ile değiştiriyor. Yani, eğer bir kişinin oda servisi için harcadığı miktar bilinmiyorsa, o grubun ortalaması ile dolduruyor.
test_1_ <- test_1_ %>%
group_by(Destination) %>%
mutate_at(vars(RoomService), ~replace_na(.,mean(.,na.rm = TRUE)))Bu kod, bir otel müşterileri listesinde, varış noktalarına göre gruplanmış odalardaki oda servisi harcamalarının ortalamasını alıyor ve boş olan yerleri bu ortalama değerlerle dolduruyor.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
Bu kod, bir veri setindeki tüm sütunların özet istatistiklerini gösterir.
Bu kod, train$FoodCourt veri çerçevesinde yer alan FoodCourt sütununun histogramını çizer. Bir histogram, bu sütundaki değerlerin dağılımını görselleştirmek için kullanılır, yani insanların ne kadar sıklıkla ne kadar harcama yaptığını gösterir.
Bu kod, ‘train’ adlı veri setindeki ‘FoodCourt’ sütununda yer alan eksik değerleri (NA) sıfır ile değiştirir ve değişiklikleri aynı ‘train’ veri setine kaydeder. Yani, eğer bir müşterinin ‘FoodCourt’ harcaması bilinmiyorsa, bu harcamayı sıfır olarak varsayıp listeye ekler.
Bu kod, test_1 adlı bir veri setindeki FoodCourt sütununda eksik değerleri (NA) sıfır ile doldurur. Yani, eğer bir müşteri yemek alanında hiç harcama yapmamışsa ya da veri kayıp ise, bu durumda harcamayı sıfır olarak kabul eder.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
Bu kod train veri setindeki tüm sütunların özet istatistiklerini çıkarır. Bu özetler, her sütunda kaç tane benzersiz değer olduğu, ortalamaları, standart sapmaları, en küçük ve en büyük değerler gibi bilgileri içerir. Kısacası, veri setiniz hakkında genel bir bilgi edinmenizi sağlar.
train <- train %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0),
Spa = coalesce(Spa, 0),
VRDeck = coalesce(VRDeck, 0))Bu kod, ‘train’ veri setinde ‘ShoppingMall’, ‘Spa’ ve ‘VRDeck’ sütunlarındaki eksik değerleri (NA) sıfır ile değiştirir. Yani, bu üç aktivite için harcama yapılmadıysa ya da kayıt yoksa, harcamayı sıfır olarak kabul edip günceller.
test_1_ <- test_1_ %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0),
Spa = coalesce(Spa, 0),
VRDeck = coalesce(VRDeck, 0))Bu kod, ‘test_1’ adlı veri setindeki ‘ShoppingMall’, ‘Spa’ ve ‘VRDeck’ sütunlarında bulunan eksik değerleri (NA) sıfır ile doldurur. Yani, bir kişinin bu alanlarda harcama yapmadığı ya da harcama verisinin kayıp olduğu durumlarda, harcamaları sıfır olarak kabul edip günceller.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
Bu kod, train veri setindeki tüm sütunlar için özet istatistikler üretir. Bu özetler, her bir sütundaki sayısal değerlerin dağılımını, örneğin ortalamalarını, standart sapmalarını, minimum ve maksimum değerleri gösterir.
Bu kod, train adlı veri çerçevesinden yalnızca Name sütununu seçer ve bu sütunu içeren yeni bir veri çerçevesi oluşturarak train adlı değişkene geri atar. Diğer bir deyişle, veri setindeki tüm isimleri bir liste halinde alıp saklar.
Bu kod, test_1_ adlı veri çerçevesinden sadece Name adlı sütunu seçer ve bunu test_1_ adlı değişkene tekrar atar. Yani, bu işlemle test veri setindeki diğer tüm sütunlar atılır ve yalnızca isimler kalır.
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 ailenum chr 0 0 6217 NA NA NA
## 14 ailesira chr 0 0 8 NA NA NA
## 15 deck chr 199 2.3 9 NA NA NA
## 16 num chr 199 2.3 1818 NA NA NA
## 17 side fct 0 0 3 NA NA NA
Bu kod, train veri setindeki tüm değişkenlerin özet istatistiklerini alır. Bu, her bir sütundaki sayısal değerler için ortalama, minimum, maksimum, medyan gibi temel istatistikleri içerir ve veri seti hakkında genel bir fikir verir.
Bu kod, train veri setindeki deck sütununa ‘NA’ değerleri için ek bir faktör seviyesi ekler. Yani, bu sütundaki mevcut faktör seviyelerine ek olarak, eksik verileri de bir kategori olarak dahil edebilirsiniz. Bu, eksik değerlerin analizlerde göz ardı edilmesini önler ve onları da hesaba katar.
Bu kod test_1_ veri setindeki deck sütunundaki faktör seviyelerine ‘NA’ (eksik değerler) için bir ek seviye ekler. Yani, eksik veri değerlerini faktör olarak dahil eder ve onları analizlerde bir kategori olarak kullanmaya olanak tanır.
Bu kod, train veri setindeki deck sütununun faktör seviyelerindeki NA (eksik değerleri) temsil eden seviyeyi “na” olarak isimlendirir. Yani, bu sütundaki eksik verileri “na” olarak etiketlenmiş bir faktör seviyesi ile değiştirir. Bu işlem, eksik verilerin analizlerde daha kolay tanımlanabilmesini sağlar.
Bu kod, test_1_ veri setindeki deck sütununun faktör seviyelerindeki NA (eksik değerleri) “na” olarak etiketler. Yani, bu sütunda eksik verileri temsil eden faktör seviyesinin adını “na” olarak değiştirir. Bu, eksik verilerin analizlerde ve raporlamalarda açıkça tanımlanmasını sağlar.
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 ailenum chr 0 0 6217 NA NA NA
## 14 ailesira chr 0 0 8 NA NA NA
## 15 deck fct 0 0 9 NA NA NA
## 16 num chr 199 2.3 1818 NA NA NA
## 17 side fct 0 0 3 NA NA NA
Bu kod, train adlı veri setindeki tüm değişkenler için temel özet istatistikleri hesaplar. İçerdiği istatistikler genellikle her bir sütun için minimum, maksimum, ortalama, medyan ve standart sapma gibi değerleri içerir. Bu işlem, veri setinin genel bir yapısını anlamak için sıkça kullanılır.
## # A tibble: 16 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 4277 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 91 2.1 80 0 28.7 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 846 0 219. 11567
## 8 FoodCourt dbl 0 0 902 0 429. 25273
## 9 ShoppingMall dbl 0 0 715 0 173. 8292
## 10 Spa dbl 0 0 833 0 296. 19844
## 11 VRDeck dbl 0 0 796 0 305. 22272
## 12 ailenum chr 0 0 3063 NA NA NA
## 13 ailesira chr 0 0 8 NA NA NA
## 14 deck fct 0 0 9 NA NA NA
## 15 num chr 100 2.3 1506 NA NA NA
## 16 side fct 0 0 3 NA NA NA
Bu kod, test_1_ adlı veri setindeki tüm değişkenlerin özet istatistiklerini hesaplar. Bu, her bir sütun için temel istatistiksel ölçümleri, yani minimum, maksimum, ortalama, medyan ve standart sapma gibi değerleri içerir. Veri setinin genel özelliklerini anlamak için kullanılır.
Bu kod train$ailenum sütununda yinelenen değerleri belirlemek için kullanılır. ifelse fonksiyonu, herhangi bir değerin yinelenip yinelenmediğini kontrol eder ve yinelenen her değer için 1 döndürür, aksi takdirde 0 döndürür. duplicated fonksiyonun fromLast = TRUE argümanı, aramayı sütunun sonundan başlatarak yinelenen değerleri sondan başlayarak işaretler. Bu sayede, bir değer birden fazla kez yinelendiyse bile, yalnızca son tekrar 1 olarak işaretlenir.
test_1_$aile <- ifelse(duplicated(test_1_$ailenum) | duplicated(test_1_$ailenum,fromLast = TRUE), 1, 0)Bu kod, test_1_$ailenum sütunundaki tekrarlanan değerleri işaretler; eğer bir değer ilk defa görülüyorsa 0, tekrarlanan bir değerse 1 değeri atanır.
## # A tibble: 20 × 4
## PassengerId ailenum ailesira aile
## <chr> <chr> <chr> <dbl>
## 1 0001_01 0001 01 0
## 2 0002_01 0002 01 0
## 3 0003_01 0003 01 1
## 4 0003_02 0003 02 1
## 5 0004_01 0004 01 0
## 6 0005_01 0005 01 0
## 7 0006_01 0006 01 1
## 8 0006_02 0006 02 1
## 9 0007_01 0007 01 0
## 10 0008_01 0008 01 1
## 11 0008_02 0008 02 1
## 12 0008_03 0008 03 1
## 13 0009_01 0009 01 0
## 14 0010_01 0010 01 0
## 15 0011_01 0011 01 0
## 16 0012_01 0012 01 0
## 17 0014_01 0014 01 0
## 18 0015_01 0015 01 0
## 19 0016_01 0016 01 0
## 20 0017_01 0017 01 1
Bu kod, train veri setinin ilk 20 satırını ve yalnızca ‘PassengerId’, ‘ailenum’, ‘ailesira’, ‘aile’ sütunlarını gösterir. Yani veri setindeki ilk 20 yolcunun bu sütunlara ait verilerini incelemek için kullanılır.
Bu kod, train veri setinin ilk 20 satırını ve yalnızca ‘PassengerId’, ‘ailenum’, ‘ailesira’, ‘aile’ sütunlarını gösterir. Yani veri setindeki ilk 20 yolcunun bu sütunlara ait verilerini incelemek için kullanılır.
Bu kod, test_1_ veri çerçevesinden ‘ailenum’, ‘ailesira’ ve ‘num’ sütunlarını çıkararak yeni bir veri çerçevesi oluşturur ve bu yeni veri çerçevesini test_1_ olarak kaydeder. Yani, bu üç sütunu hariç tüm verileri içeren güncellenmiş bir veri çerçevesi elde edersiniz.
## # A tibble: 15 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 deck fct 0 0 9 NA NA NA
## 14 side fct 0 0 3 NA NA NA
## 15 aile dbl 0 0 2 0 0.45 1
## # A tibble: 14 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 4277 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 91 2.1 80 0 28.7 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 846 0 219. 11567
## 8 FoodCourt dbl 0 0 902 0 429. 25273
## 9 ShoppingMall dbl 0 0 715 0 173. 8292
## 10 Spa dbl 0 0 833 0 296. 19844
## 11 VRDeck dbl 0 0 796 0 305. 22272
## 12 deck fct 0 0 9 NA NA NA
## 13 side fct 0 0 3 NA NA NA
## 14 aile dbl 0 0 2 0 0.45 1
Logistic Regresyon
Lojistik regresyon, isminde “regresyon” geçmesine rağmen bir sınıflandırma algoritmasıdır.verilmiş olan bilgilerin bir erkeğe mi yoksa bir kadına mı ait olduğunu tahmin etme gibi iki sınıflı sınıflandırma problemlerinde kullanılır. Lojistik regresyonun, lineer regresyon ile arasındaki en büyük farkı iki sınıfı birbirinden ayıracak çizgiyi nasıl uyguladığıdır (fit). Lineer regresyon, optimum çizgiyi çizmek için “En Küçük Kareler Yöntemi” (Least Squares) kullanırken, lojistik regresyon “Maksimum Olabilirlik” (Maximum Likelihood) kullanır.
Bu kod, ‘train’ adlı veri setinin 2. ve 15. sütunları arasındaki verileri ‘train_set’ adlı yeni bir değişkene atıyor.
Bu kod, ‘test_1_’ adlı veri setinin 2. ve 15. sütunları arasındaki verileri ’test_1__set’ adlı yeni bir değişkene atıyor.
library(caTools)
set.seed(123)
split = sample.split(train_set$Transported, SplitRatio = 0.75)
training_set = subset(train_set, split == TRUE)
testing_set = subset(train_set, split == FALSE) Bu R kodu, ‘train_set’ veri setini eğitim ve test setlerine ayırmak için ‘caTools’ paketinden ‘sample.split’ fonksiyonunu kullanıyor. ‘set.seed(123)’ fonksiyonu, sonuçların tekrarlanabilir olmasını sağlamak için rastgele sayı üretecinin tohum değerini ayarlar. ‘sample.split’ ile ‘train_set$Transported’ sütununa göre veri seti %75 eğitim ve %25 test olacak şekilde ayrılır. ‘subset’ fonksiyonu ile bu bölünme esas alınarak ‘training_set’ ve ‘testing_set’ oluşturulur.
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Bu kod, genelleştirilmiş doğrusal modellerden biri olan lojistik regresyon modelini kurmak için kullanılır. ‘glm’ fonksiyonu, bağımsız değişkenlerin bağımlı değişken ‘Transported’ üzerindeki etkisini modellemek için kullanılır. ‘family = binomial’ argümanı, bağımlı değişkenin ikili sonuçlar (örneğin evet/hayır, 0/1) içerdiğini belirtir, bu durumda lojistik regresyon uygundur. ‘data = training_set’ argümanı ise modelin kurulacağı veri setini belirtir. Model kurulduktan sonra, bu modelin bağımsız değişkenlerin ‘Transported’ üzerindeki etkisini nasıl açıkladığını değerlendirebiliriz.
logistic = glm(formula = Transported ~ .,
family = binomial,
data = training_set,
control = list(maxit =100))## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Model, ‘training_set’ veri setindeki ‘Transported’ bağımlı değişkenini, bu veri setindeki diğer tüm değişkenlerle ilişkilendirir (formülde ‘~ .’ kullanılarak belirtilmiştir). ‘family = binomial’ seçeneği, bağımlı değişkenin ikili olduğunu (örneğin 0 veya 1, başarısız veya başarılı gibi) gösterir, yani sonucun iki olası sonucu vardır. ‘control = list(maxit = 100)’ argümanı, algoritmanın yakınsaması için maksimum iterasyon sayısını 100 olarak sınırlar, bu da modelin eğitim sürecinde en fazla 100 iterasyon yapabileceği anlamına gelir.
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
Bu kodu, ‘logistic’ kullanarak tahminler yapmak için ‘predict’ fonksiyonunu kullanır. ‘type = “response”’ argümanı, olasılık cinsinden tahminlerin döndürülmesini sağlar. Bu olasılıklar, ‘testing_set’ veri setindeki bağımsız değişkenler kullanılarak hesaplanır; ‘[ -11]’ ifadesi, test setinden 11. sütunun çıkarıldığını belirtir.
Daha sonra ‘ifelse’ fonksiyonu kullanılarak, her bir tahmin edilen olasılık için bir eşik değeri (bu örnekte 0.5) belirlenir. Eğer olasılık 0.5’ten büyükse, tahmin edilen değer olarak 1 atanır, değilse 0 atanır. Bu ikili tahminler, modelin performansını değerlendirmek için kullanılabilir.
Bu kod, testing_set adlı bir dizinin 11. elemanının TRUE olup olmadığını kontrol eder ve buna bağlı olarak y_true adlı bir değişkene 1 veya 0 değerini atar. Eğer 11. eleman TRUE ise y_true 1 olur, değilse 0 olur.
Bu R kodu, prob_pred adlı bir değişkenin değerlerini 0.5 eşiğine göre test eder ve bu eşiğin üzerindeki değerler için y_pred değişkenine 1 atar, altında kalanlar için 0 atar. Bu genellikle, olasılık temelli bir modelin çıktısını ikili bir sınıflandırmaya (1 veya 0) dönüştürmek için kullanılır.
Bu R kodu, y_true ve y_pred adlı iki vektör kullanarak bir karışıklık
matrisi (confusion matrix) oluşturur. table fonksiyonu, her
bir kombinasyonun kaç kez meydana geldiğini sayar; böylece, gerçek
pozitifler, yanlış pozitifler, gerçek negatifler ve yanlış negatifler
gibi değerler elde edilir. Bu, bir sınıflandırma modelinin performansını
değerlendirmek için yaygın bir yöntemdir.
## y_pred
## y_true 0 1
## 0 819 260
## 1 189 905
## [1] 0.7933732
Bu ifade bir sınıflandırma modelinin doğruluk oranını (accuracy)
hesaplamak için kullanılıyor olabilir. Doğruluk oranı, tüm doğru
tahminlerin (hem pozitif hem de negatif) tüm tahminlere oranıdır.
Hesaplanan değer (0.7933732), modelin tahminlerinin
yaklaşık %79.34 doğru olduğunu gösterir
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Bu R kodu, train_set veri setini kullanarak Transported bağımlı değişkeni üzerine lojistik regresyon modeli kurar. binomial ailesi, modelin ikili (0 veya 1) sonuçlar üretmesi gerektiğini belirtir. Bu kod, Transported değişkenini, train_set içindeki diğer değişkenlerle ilişkilendirir.
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
Bu R kodu, daha önce kurulmuş olan logistic_son adındaki lojistik regresyon modelini kullanarak test_l_set veri seti için tahminler üretir. predict fonksiyonu modelden olasılık değerleri üretir ve type = “response” argümanı, olasılıkların dönüş tipini belirtir. Daha sonra, ifelse fonksiyonu bu olasılıkları kullanarak 0.5 eşiğinin üzerindekileri TRUE, altındakileri FALSE olarak ikili bir tahmin sonucu olarak döndürür. Bu, modelin sınıflandırma tahminlerini elde etmek için kullanılır.
Bu kod, y_pred isimli bir değişkenin değerlerini karakter dizisine dönüştürüp Transported isimli bir değişkene atar ve test_l_set veri setindeki PassengerId sütununu PassengerId isimli başka bir değişkene atar. Bu, genellikle bir modelin tahmin sonuçlarını ve ilgili yolcu kimliklerini bir araya getirip sonuçları düzenlemek veya kaydetmek için yapılır.
Bu R kodu, Transported adlı bir veri yapısını bir vektöre dönüştürüp
yine aynı adla (Transported) kaydeder. as.vector
fonksiyonu, veri yapılarını basit vektör formatına çevirmek için
kullanılır. Bu işlem genellikle veri tipini standartlaştırmak veya başka
fonksiyonlarla uyumluluk sağlamak için yapılır.
Bu kod iki vektörü (faktörü,sütunu) yan yana bağlamak için kullanılan bir fonksiyonu gösteriyor. cbind fonksiyonu, “column bind” yani “sütun bağlama” ifadesinin kısaltmasıdır ve verilen nesneleri yan yana birleştirerek bir matris veri çerçevesi oluşturur. Burada PassengerId ve Transported yan yana birleştirerek sample_submission adında yeni bir veri çerçevesi oluşturuyor. Bir veri analizinde, yolcu ID’lerini ve bu yolcuların taşınıp taşınmadığını gösteren bir tahmin sonucunu içeren bir gönderim dosyası oluşturmak için kullanılıyor.
Bu komut sample_submission nesnesini, bir veri çerçevesi olarak kullanılabilecek biçime getiriyor ve bu dönüşüm sonucunu aynı isimle üstüne yazarak kaydediyor. Bu işlem, genellikle veri analizi süreçlerinde, verilerin uygun veri türünde olması gerektiğinde kullanılır.
Bu R kodu, sample_submission adlı veri çerçevesinin Transported sütunundaki her bir metin değerini “başlık formatı”na dönüştürmek için kullanılıyor. str_to_title fonksiyonu bu dönüşümü gerçekleştirir. Dolayısıyla, bu kod Transported sütunundaki her bir metni bu formata çevirip, orijinal sütunu güncellenmiş haliyle değiştiriyor. Bu, veri temizleme veya standardizasyon adımlarında kullanılır ki, tüm veriler aynı formatı takip etsin ve analizlerde tutarlılık sağlansın.
Bu R kodu write.csv fonksiyonunu kullanarak, sample_submission adlı veri çerçevesini “sample_submission_logistic.csv” adlı bir CSV dosyası olarak kaydediyor. row.names and = FALSE seçeneği, satır isimlerinin dosyaya kaydedilmemesini sağlar, quote = FALSE seçeneği ise metin alanlarının tırnak işaretleri içine alınmamasını sağlar. Yani bu kod, veri çerçevesini bir CSV dosyası olarak kaydederken satır isimlerini ve metin alanlarındaki tırnak işaretlerini atlayarak daha temiz bir veri dosyası oluşturur. Bu işlem, analiz sonuçlarını veya veri çerçevelerini dışa aktarmak için kullanılır.
Naive Bayes
Naive Bayes sınıflandırması olasılık ilkelerine göre tanımlanmış bir dizi hesaplama ile, sisteme sunulan verilerin sınıfını yani kategorisini tespit etmeyi amaçlar. Naïve Bayes sınıflandırmasında sisteme belirli bir oranda öğretilmiş veri sunulur
library(e1071)
fit_nb <- naiveBayes(Transported ~ ., data =training_set)
preds <- predict(fit_nb, newdata = testing_set, type = "raw") %>%
data.frame()library(e1071): Makine öğrenimi algoritmalarını içeren e1071 paketini yüklüyor.
fit_nb <- naiveBayes(Transported ~ ., data=training_set): training_set veri çerçevesi kullanılarak bir Naive Bayes sınıflandırıcı modeli eğitiyor. Transported sütunu hedef değişken (bağımlı değişken), diğer tüm sütunlar bağımsız değişken olarak kullanılıyor.
preds <- predict(fit_nb, newdata=testing_set, type = “raw”):
Eğitilmiş model (fit_nb) kullanılarak testing_set veri
çerçevesi üzerinde tahminler yapıyor. type = “raw” seçeneğiyle, tahmin
olasılıklarının ham formatında dönmesini sağlıyor. Kodun sonunda görünen
%% sembolleri bir hata olabilir veya görüntünün kesilmesiyle alakalı
olabilir, normalde R’da bu sembollerin bir anlamı yoktur.
Bu kod, sınıflandırma modelini eğitmek ve test veri seti üzerinde tahminler yapmak için kullanılır,
Bir koşulun sonucuna bağlı olarak yeni bir değişken oluşturuyor. y_pred isimli değişken, ifelse fonksiyonu kullanılarak tanımlanmış. Eğer preds$TRUE isimli vektördeki değerler 0.5’ten büyükse, y_pred değişkenine 1 değeri atanıyor; değilse 0 atanıyor. Bu kod olasılık temelli bir modelin çıktısını ikili bir sınıflandırma sonucuna dönüştürmek için kullanılır.
Kod, y_true ve y_pred vektörlerini kullanarak bir karışıklık matrisi oluşturur, bu da modelin tahminlerinin doğruluğunu değerlendirmek için kullanılır.
## y_pred
## y_true 0 1
## 0 510 569
## 1 78 1016
## [1] 0.7022549
Kod, naiveBayes fonksiyonunu kullanarak, train_set veri seti üzerinde bir Naive Bayes sınıflandırıcı modeli eğitiyor. Transported hedef değişken ve diğer sütunlar bağımsız değişkenler olarak kullanılıyor. Bu model, veri setindeki desenleri öğrenmek ve yeni gözlemlerin Transported değerlerini tahmin etmek için kullanılabilir.
Bu kod predict fonksiyonunu kullanarak daha önce eğitilen nb_son Naive Bayes modeli ile test_l_set veri seti için tahminlerde bulunur. type = “raw” seçeneği, sınıflandırmanın ham olasılıklarını döndürür. Sonuçlar preds değişkenine atanır ve bir veri çerçevesine dönüştürülür.
Bu kod, preds$TRUE vektöründeki her bir değer için, eğer değer 0.5’ten büyükse TRUE, değilse FALSE döndüren bir mantıksal işlem gerçekleştirir. Sonuçlar y_pred adında yeni bir vektöre atanır. Bu işlem olasılık temelli tahminlerin kesikli sınıflandırma sonuç larına dönüştürülmesi için kullanılır; burada bir eşik değer (0.5) kullanılarak tahminler ikili bir karara (TRUE veya FALSE) çevrilir.
Kod y_pred vektörünü karakter dizisine çevirir ve Transported adıyla yeni bir sütun oluşturur. Ayrıca, test_l veri setindeki PassengerId sütununu başka bir sütun olarak atar. Bu genellikle, modelin tahminlerini içeren bir gönderim dosyası hazırlarken kullanılır, burada her tahmin bir yolcu ID’si ile ilişkilendirilir.
Kod Transported sütununu bir vektöre dönüştürür. as.vector fonksiyonu, veriyi basit bir vektör yapısına çevirir, bu da genellikle veri işleme veya analiz işlemlerinde kullanılır.
Bu kod, PassengerId ve Transported vektörlerini birleştirerek sample_submission isimli yeni bir matris oluşturur.
Bu kod, sample_submission adlı bir matrisi veri çerçevesine dönüştürür, böylece daha karmaşık veri analizi ve manipülasyon işlemleri için uygun bir formata sahip olur.
Bu kod, sample_submission adlı bir matrisi veri çerçevesine dönüştürür, böylece daha karmaşık veri analizi ve manipülasyon işlemleri için uygun bir formata sahip olur.
Bu R kodu, sample_submission veri çerçevesini “sample_submission_nb.csv” isimli bir CSV dosyası olarak kaydeder. row.names = FALSE seçeneği satır isimlerinin kaydedilmemesini sağlar, quote = FALSE seçeneği ise alanların tırnak işaretleriyle çevrelenmemesini sağlar. Bu sonuçları dışa aktarmak için kullanılır.
SVM
SVM Sınıflandırıcıları, Naïve Bayes algoritmasına kıyasla iyi doğruluk sunar ve daha hızlı tahmin gerçekleştirir. Ayrıca, karar aşamasında bir alt eğitim noktası kümesi kullandıkları için daha az bellek kullanırlar. SVM, net bir ayırma marjı ve yüksek boyutsal boşlukla iyi çalışır.
Dezavantajı ise SVM, yüksek eğitim süresi nedeniyle büyük veri kümeleri için uygun değildir ve aynı zamanda Naïve Bayes’e kıyasla model eğitimi sırasında eğitimde daha fazla zaman harcar. Çakışan sınıflarla kötü çalışır ve ayrıca kullanılan çekirdek türüne duyarlıdır.
library(e1071)
fit_svm <- svm(Transported ~ ., data = training_set,
type = 'C-classification',
kernel ='radial')e1071, R’de çeşitli istatistiksel öğrenme algoritmalarını içeren bir pakettir. SVM de bu paketin içinde bulunmaktadır.
Transported ~ . ifadesi, bağımlı değişkenin “Transported” olduğunu ve bağımsız değişkenlerin tüm diğer sütunları içerdiğini belirtir.
data = training_set ifadesi, modelin eğitileceği veri setini belirtir. Bu durumda, training_set adlı bir veri çerçevesini kullanıyoruz.
type = ‘C-classification’ ifadesi, SVM modelinin sınıflandırma (classification) türünde olduğunu belirtir. Yani, kategorik bir hedef değişkenin tahmin edilmeye çalışıldığı bir durumu ifade eder.
kernel =‘radial’ ifadesi, SVM’nin çekirdek fonksiyonunu belirtir. “Radial” çekirdek, RBF (Radial Basis Function) çekirdeği olarak da adlandırılır ve genellikle sınıflandırma problemlerinde kullanılır. Bu çekirdek, özellikle non-lineer veri setlerinde etkili olabilir.
Bu R kodu, SVM modeli (fit_svm) kullanarak testing_set üzerinde sınıflandırma tahminleri yapar ve bu tahminleri bir veri çerçevesine (preds) dönüştürür.
Bu R kodu, preds veri çerçevesindeki belirli bir sütunun değerlerini kontrol eder. Eğer sütundaki değer TRUE ise, 1; değilse, 0 olarak sınıflandırarak y_pred adlı bir değişkene atar. Yani, bu kod, bir sınıflandırma modelinin çıkışını ikili bir formata (1 veya 0) dönüştürür.
Bu R kodu, gerçek (y_true) ve tahmin (y_pred) sınıflandırma sonuçları
arasındaki karşılaştırmayı yaparak bir karmaşıklık matrisi (confusion
matrix) oluşturur. Yani, cm adlı değişken, gerçek ve tahmin
edilen sınıflar arasındaki sayıları içeren bir matrisi temsil eder. Bu
matris, sınıflandırma modelinin performansını değerlendirmek için
kullanılır.
## y_pred
## y_true 0 1
## 0 847 232
## 1 198 896
## [1] 0.8021169
Bu R kodu, train_set veri seti üzerinde bir destek
vektör makinesi (SVM) sınıflandırma modeli oluşturur. Oluşturulan model,
“Transported” adlı hedef değişkeni diğer bağımsız değişkenlere (tüm
sütunlara) göre sınıflandırmaya çalışan bir C-sınıflandırma SVM
modelidir. Kernel olarak “radial” (RBF - Radial Basis Function) çekirdek
fonksiyonu kullanılmaktadır. Yani, bu kod, belirtilen veri seti üzerinde
C-sınıflandırma tipinde bir SVM modeli eğitmek için
kullanılmaktadır.
Bu R kodu, önceden eğitilmiş bir destek vektör makinesi (SVM) modeli
(svm_son) kullanılarak yeni bir test veri seti
(test_1__set) üzerinde sınıflandırma tahminleri yapar ve bu
tahminleri bir veri çerçevesine (data.frame()) dönüştürür,
preds adlı değişkene atar.
Bu R kodu, preds adlı veri çerçevesindeki bir sütunu
($.) alarak, sınıflandırma tahminlerini
(y_pred) temsil eden bir değişkene atar. Yani, bu kod,
sınıflandırma modelinin yeni veri seti üzerinde yapmış olduğu tahminleri
içeren sütunu y_pred değişkenine atar.
Bu R kodu, önceki sınıflandırma tahminlerini içeren
y_pred değişkenini karakter (string) türüne dönüştürerek
Transported adlı bir değişkene atar. Aynı şekilde,
test_1_$PassengerId ifadesiyle test_1_ veri
setindeki PassengerId sütununun değerlerini
PassengerId adlı bir değişkene atar. Yani, bu kod,
sınıflandırma sonuçları ve PassengerId değerlerini içeren
iki değişken oluşturur.
Bu R kodu, Transported değişkenini vektör tipine
dönüştürerek veri tipini uygun hale getirir.
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 2)
Bu R kodu, PassengerId ve Transported
değişkenlerini içeren bir veri çerçevesi olan
sample_submission’ı oluşturur.
Bu R kodu, sample_submission adlı veri çerçevesini, eğer
önceki tipi farklı bir nesne ise (örneğin, matris ya da faktör),
as.data.frame() fonksiyonu ile veri çerçevesi tipine
dönüştürür. Yani, bu kod, sample_submission’ı veri
çerçevesi tipine dönüştürerek bu nesnenin özelliklerini uygun bir
formata getirir.
Bu R kodu, sample_submission veri çerçevesindeki Transported sütunundaki metin değerlerini düzenlemek amacıyla kullanılır. str_to_title() fonksiyonu, sütundaki her kelimenin baş harfini büyük yaparak bir başlık formatına getirir. Örneğin, “survived” kelimesini “Survived” şeklinde değiştirir. Bu tür bir işlem genellikle veri setindeki kategorik değişkenlerin görünümünü düzenlemek ve standartlaştırmak için yapılır.
Bu R kodu, sample_submission veri çerçevesini CSV
dosyasına yazmak için kullanılır. write.csv() fonksiyonu,
belirtilen veri çerçevesini bir CSV dosyasına dönüştürerek, bu dosyayı
belirtilen adla (“samp_sub_svm.csv”) kaydeder.
row.names = FALSE parametresi, veri çerçevesindeki satır
numaralarının (row names) kaydedilmemesini sağlar ve
quote = FALSE parametresi, metin içeriğinin tırnak içine
alınmamasını sağlar. Bu şekilde, daha temiz ve okunabilir bir CSV
dosyası oluşturulur.
SVM radial (kernel)
SVM de doğrusal bir doğru ile sınıfları ayırmaya çalışır. Ancak doğrusal ayraçlar doğrusal olmayanlar kadar her zaman başarılı olamaz. Doğrusal olarak birbirinden ayrılamayan sınıflar için kernel trick diye adlandırılan bir yöntem uygulanır. Bu yöntemde kernel fonksiyon uygulanarak normalde doğrusal olarak ayrılamayan sınıflar doğrusal olarak ayrılabilir hale getirilir ve daha başarılı sonuçlar elde edilir.
ÖRNEK;
type = ‘C-classification’: Bu, modelin bir sınıflandırma modeli olacağını belirtir. ‘C-classification’, çok sınıflı bir sınıflandırma problemi için uygundur.
kernel = ‘radial’: Bu, kullanılacak çekirdek fonksiyonunu belirtir. ‘radial’ (RBF - Radial Basis Function) çekirdeği, genellikle sınıflandırma problemleri için yaygın olarak kullanılan bir çekirdek türüdür. Bu çekirdek, özellikle non-lineer veri setlerinde etkili olabilir.
Sonuç olarak, bu kod, “Transported” bağımlı değişkenini kullanarak eğitim setindeki diğer bağımsız değişkenlere dayalı bir SVM sınıflandırma modeli oluşturmayı amaçlar. Modelin karmaşıklığı ve performansı, kullanılan çekirdek fonksiyonu (RBF) ve diğer parametrelerle belirlenir.
Bu R kodu,SVM modelini (svm_ker_son) kullanarak yeni bir
veri seti (test_1__set) üzerinde tahminler yapar. Tahmin
sonuçları, olasılık değerlerini içeren bir veri çerçevesine
(preds) dönüştürülür.
Bu R kodu, preds adlı veri çerçevesindeki bir sütunu
($.) alarak, sınıflandırma tahminlerini
(y_pred) temsil eden bir değişkene atar. Yani, bu kod,
sınıflandırma modelinin yeni veri seti üzerinde yapmış olduğu tahminleri
içeren sütunu y_pred değişkenine atar.
Bu R kodu, önceki tahminleri içeren y_pred vektörünü
karakter türüne çevirerek Transported adlı bir karakter
vektörü oluşturur. Ardından, test_1_ veri çerçevesindeki
PassengerId sütununu PassengerId adlı bir
vektöre kopyalar. Bu işlemler, tahmin sonuçlarını ve ilgili yolcu
kimliklerini daha fazla analiz veya işlem için hazırlamak amacıyla
gerçekleştirilir.
Transported karakter vektörünü, birinci boyutlu bir karakter dizisine dönüştürmek amacıyla as.vector() fonksiyonu kullanılarak yeniden tanımlar. Transported vektörünü karakter vektörü olarak güvence altına almak için kullanılır.
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 2)
Bu R kodu, PassengerId ve Transported vektörlerini birleştirerek sample_submission adlı bir veri çerçevesi oluşturur.sample_submission adlı veri çerçevesi, tahmin sonuçlarını ve ilgili yolcu kimliklerini içeren bir formatta saklamak için kullanılır.
Bu R kodu, sample_submission adlı veri çerçevesini bir
matris ya da başka bir veri yapısından alıp, onu bir veri çerçevesine
dönüştürerek sample_submission adlı değişkeni
günceller.
Bu R kodu, sample_submission veri çerçevesindeki Transported sütunundaki metin değerlerini düzenlemek amacıyla kullanılır. str_to_title() fonksiyonu, sütundaki her kelimenin baş harfini büyük yaparak bir başlık formatına getirir.
Bu R kodu, sample_submission veri çerçevesini “sub_kernelsvm.csv” adlı bir CSV dosyasına yazmayı sağlar.
Decision Trees
Karar ağacı algoritmalarının birçok avantajı vardır. Bunlar aşağıdaki şekildedir:
Anlaşılması ve yorumlanması basittir. Doğrusal olmayan verileri tanımlayabildikleri için esnektir. Veri ön işleme gerekmediğinden kullanımı kolaydır.
Öte yandan, ağaçların bazı dezavantajları vardır. Bunlar aşağıdaki şekildedir:
Eğitim verilerindeki küçük değişikliklere karşı hassastır. Kısıtlanmadığında aşırı uyuma duyarlıdır.
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
##
## Attaching package: 'randomForest'
## The following object is masked from 'package:dplyr':
##
## combine
## The following object is masked from 'package:ggplot2':
##
## margin
## Zorunlu paket yükleniyor: lattice
##
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
##
## lift
rpart: CART (Classification and Regression Trees) algoritması uygulamasını sağlar. Karar ağaçları oluşturarak sınıflandırma ve regresyon analizleri yapılabilir.
rpart.plot: rpart tarafından oluşturulan karar ağaçlarını görselleştirmek için kullanılır. Bu, ağaç yapısını grafiksel olarak anlamak ve açıklamak için kullanışlıdır.
randomForest: Rastgele orman algoritması uygulamasını sağlar. Birden fazla karar ağacını birleştirerek daha güçlü ve genel geçer modeller oluşturulabilir. Sınıflandırma ve regresyon problemleri için uygundur.
caret: Genel makine öğrenimi görevlerini kolaylaştırmak üzere çeşitli araçlar sağlar. Model seçimi, hiperparametre ayarı ve performans değerlendirmesi gibi işlemleri destekler.
training_set$Transported <- as.factor(training_set$Transported)
testing_set$Transported <- as.factor(testing_set$Transported)
train_set$Transported <- as.factor(train_set$Transported)Bu R kodu, training_set, testing_set, ve
train_set veri çerçevelerindeki Transported
değişkenlerini kategorik (faktör) türe dönüştürerek sınıflandırma
türünde değişkenlere çevirir. Bu dönüşüm, genellikle sınıflandırma
modelleri için giriş değişkenlerini doğru formata getirme amacını taşır.
Sınıflandırma modelleri, özellikle R’de kullanılan bazı algoritmaların,
kategorik hedef değişkenlerle daha iyi çalıştığı durumlar için bu tür
bir formatı tercih edeR.
## Call:
## rpart(formula = Transported ~ ., data = training_set)
## n= 6520
##
## CP nsplit rel error xerror xstd
## 1 0.43016069 0 1.0000000 1.0000000 0.01247595
## 2 0.03574372 1 0.5698393 0.5698393 0.01123791
## 3 0.01000000 4 0.4626082 0.4663164 0.01052385
##
## Variable importance
## CryoSleep Spa VRDeck RoomService FoodCourt ShoppingMall
## 43 16 15 12 7 4
## HomePlanet deck
## 2 1
##
## Node number 1: 6520 observations, complexity param=0.4301607
## predicted class=TRUE expected loss=0.496319 P(node) =1
## class counts: 3236 3284
## probabilities: 0.496 0.504
## left son=2 (4240 obs) right son=3 (2280 obs)
## Primary splits:
## CryoSleep splits as LRL, improve=683.0583, (0 missing)
## RoomService < 0.5 to the right, improve=412.4664, (0 missing)
## Spa < 0.5 to the right, improve=372.3306, (0 missing)
## VRDeck < 0.5 to the right, improve=353.3889, (0 missing)
## ShoppingMall < 0.5 to the right, improve=228.9794, (0 missing)
## Surrogate splits:
## Spa < 0.5 to the right, agree=0.716, adj=0.188, (0 split)
## FoodCourt < 0.5 to the right, agree=0.702, adj=0.148, (0 split)
## VRDeck < 0.5 to the right, agree=0.700, adj=0.141, (0 split)
## RoomService < 0.5 to the right, agree=0.696, adj=0.130, (0 split)
## ShoppingMall < 0.5 to the right, agree=0.686, adj=0.101, (0 split)
##
## Node number 2: 4240 observations, complexity param=0.03574372
## predicted class=FALSE expected loss=0.3358491 P(node) =0.6503067
## class counts: 2816 1424
## probabilities: 0.664 0.336
## left son=4 (1087 obs) right son=5 (3153 obs)
## Primary splits:
## RoomService < 343 to the right, improve=104.04900, (0 missing)
## Age < 12.5 to the right, improve= 87.14388, (0 missing)
## Spa < 241.5 to the right, improve= 84.79330, (0 missing)
## FoodCourt < 2168 to the left, improve= 67.12339, (0 missing)
## VRDeck < 420.5 to the right, improve= 58.17805, (0 missing)
## Surrogate splits:
## HomePlanet splits as RRLR, agree=0.788, adj=0.175, (0 split)
## deck splits as RRRLRRRRR, agree=0.748, adj=0.016, (0 split)
## Age < 78.5 to the right, agree=0.744, adj=0.002, (0 split)
##
## Node number 3: 2280 observations
## predicted class=TRUE expected loss=0.1842105 P(node) =0.3496933
## class counts: 420 1860
## probabilities: 0.184 0.816
##
## Node number 4: 1087 observations
## predicted class=FALSE expected loss=0.1471941 P(node) =0.1667178
## class counts: 927 160
## probabilities: 0.853 0.147
##
## Node number 5: 3153 observations, complexity param=0.03574372
## predicted class=FALSE expected loss=0.400888 P(node) =0.483589
## class counts: 1889 1264
## probabilities: 0.599 0.401
## left son=10 (1034 obs) right son=11 (2119 obs)
## Primary splits:
## Spa < 205 to the right, improve=131.21170, (0 missing)
## VRDeck < 135.5 to the right, improve=103.53150, (0 missing)
## Age < 12.5 to the right, improve= 60.28573, (0 missing)
## ShoppingMall < 790.5 to the left, improve= 45.61195, (0 missing)
## FoodCourt < 2200.5 to the left, improve= 45.01959, (0 missing)
## Surrogate splits:
## HomePlanet splits as RLRR, agree=0.699, adj=0.081, (0 split)
## deck splits as LRLRRRRLR, agree=0.687, adj=0.044, (0 split)
## VRDeck < 2794.5 to the right, agree=0.676, adj=0.014, (0 split)
## FoodCourt < 3197.5 to the right, agree=0.676, adj=0.012, (0 split)
## Age < 59.5 to the right, agree=0.673, adj=0.002, (0 split)
##
## Node number 10: 1034 observations
## predicted class=FALSE expected loss=0.1943907 P(node) =0.158589
## class counts: 833 201
## probabilities: 0.806 0.194
##
## Node number 11: 2119 observations, complexity param=0.03574372
## predicted class=TRUE expected loss=0.4983483 P(node) =0.325
## class counts: 1056 1063
## probabilities: 0.498 0.502
## left son=22 (604 obs) right son=23 (1515 obs)
## Primary splits:
## VRDeck < 363.5 to the right, improve=135.42270, (0 missing)
## FoodCourt < 2071 to the left, improve= 50.37469, (0 missing)
## HomePlanet splits as LRRL, improve= 40.97469, (0 missing)
## ShoppingMall < 1540.5 to the left, improve= 31.65683, (0 missing)
## Age < 10.5 to the right, improve= 29.32195, (0 missing)
## Surrogate splits:
## FoodCourt < 7197.5 to the right, agree=0.717, adj=0.008, (0 split)
## deck splits as RRLRRRRRR, agree=0.716, adj=0.003, (0 split)
## Age < 68.5 to the right, agree=0.715, adj=0.002, (0 split)
##
## Node number 22: 604 observations
## predicted class=FALSE expected loss=0.218543 P(node) =0.09263804
## class counts: 472 132
## probabilities: 0.781 0.219
##
## Node number 23: 1515 observations
## predicted class=TRUE expected loss=0.3854785 P(node) =0.232362
## class counts: 584 931
## probabilities: 0.385 0.615
##YORUM
Ağaç, uzay gemisindeki yolcu hizmetleri kullanımını analiz eden bir karar ağacını gösteriyor. Bu ağaç, yolcuların çeşitli hizmetleri kullanma olasılıklarını ve kararları nasıl verildiğini göstermektedir.
- “RoomService >= 343” düğümü: Eğer bir yolcu oda servisi harcamasını 343 birim veya daha fazla yapmışsa, sonraki karar noktasına geçer; değilse, yolcuların %65 olasılıkla oda servisini kullanmadıkları sonucuna varılır.
- “CryoSleep = FALSE, NA” düğümü: Yolcuların kriyo uyku durumu “FALSE” veya veri mevcut değilse (“NA”), yolcuların %100 olasılıkla bir sonraki hizmeti kullanmadıkları sonucuna varılır.
- “Spa >= 205” düğümü: Spa kullanımı için yolcuların harcamaları 205 birim veya daha fazla ise, bu hizmeti kullananların oranı %32 olur. Aksi takdirde, kullanmayanların oranı %48 olur.
- “VRDeck >= 364” düğümü: VR güvertesi kullanımı için harcama 364 birim veya daha fazla ise, bu hizmeti kullananların oranı %23, aksi takdirde %9’dur.
Bu karar ağacı, hangi hizmetlerin yolcular tarafından daha fazla tercih edildiğini ve yolcuların bu hizmetlere erişmek için ne kadar harcama yaptıklarını anlamak için kullanılır. Örneğin, bu ağaç, oda servisinin diğer hizmetlere göre daha az kullanıldığını, ancak kriyo uyku hizmetinin kullanılmamasının diğer hizmet kullanımlarını olumsuz etkilediğini gösterebilir. Spa ve VR güvertesi kullanımı, belirli bir harcama eşiğinin üzerindeki yolcular arasında daha popüler olabilir, ancak genel olarak bu hizmetlerin kullanımı daha düşük olabilir. Bu tür analizler, yöneticilerin hangi hizmetlere odaklanmaları gerektiğini ve müşteri memnuniyetini artırmak için hangi alanlarda iyileştirmeler yapmaları gerektiğini anlamalarına yardımcı olabilir.
fit_tree <- rpart(Transported ~ ., data = training_set): Bu satır, training_set veri çerçevesindeki Transported değişkenini diğer tüm değişkenlere bağlı olarak kullanarak bir karar ağacı modeli oluşturur. rpart() fonksiyonu, CART (Classification and Regression Trees) algoritmasını kullanır.
summary(fit_tree): Bu satır, oluşturulan karar ağacının özet istatistiklerini görüntüler. Bu özet, ağacın dalgalanma düzenini, kullanılan bağımsız değişkenleri ve diğer önemli istatistikleri içerir.
rpart.plot(fit_tree): Bu satır, fit_tree adlı karar ağacını görselleştirmek için rpart.plot kütüphanesini kullanır. Oluşturulan ağacın grafiksel temsilini sağlar.
Bu kod bloğu, veri setindeki değişkenler arasındaki ilişkileri temsil eden bir karar ağacı modeli oluşturur, özetini görüntüler ve ağacın görsel bir temsilini sağlar.
bu ağaca göre bu Transport olacak kişiler CryoSleep alanlar transported olur. cryoSleepe yakalanmadıysa true yada false ise
Bu R kodu, önceki karar ağacı modelini (fit_tree)
kullanarak testing_set veri seti üzerinde sınıflandırma
tahminleri yapar ve bu tahminleri preds adlı değişkende
saklar. Yani, modelin test seti için beklenen sınıf etiketlerini içeren
bir vektör elde edilir.
Bu R kodu, preds adlı sınıflandırma tahminlerini temel
alarak yeni bir vektör olan y_predi oluşturur.
TRUE değerleri 1’e, FALSE değerleri 0’a
dönüştürerek sınıflandırma tahminlerini ikili bir formata çevirir.
table(y_true, y_pred): Bu ifade, y_true ve y_pred vektörleri arasında bir karmaşıklık matrisi oluşturur. Karmaşıklık matrisi, gerçek ve tahmin edilen sınıfların kombinasyonlarını içerir.
cm = …: Elde edilen karmaşıklık matrisini cm adlı bir değişkene atar.
## y_pred
## y_true 0 1
## 0 735 344
## 1 170 924
cm değişkeni, sınıflandırma modelinin gerçek ve tahmin edilen sınıflarını içeren bir matrisi temsil eder.
## [1] 0.7634607
## Call:
## rpart(formula = Transported ~ ., data = train_set)
## n= 8693
##
## CP nsplit rel error xerror xstd
## 1 0.43244496 0 1.0000000 1.0000000 0.010803454
## 2 0.03406721 1 0.5675550 0.5675550 0.009719864
## 3 0.01000000 4 0.4653534 0.4690614 0.009132086
##
## Variable importance
## CryoSleep Spa VRDeck RoomService FoodCourt ShoppingMall
## 45 17 15 11 7 4
## HomePlanet
## 1
##
## Node number 1: 8693 observations, complexity param=0.432445
## predicted class=TRUE expected loss=0.4963764 P(node) =1
## class counts: 4315 4378
## probabilities: 0.496 0.504
## left son=2 (5656 obs) right son=3 (3037 obs)
## Primary splits:
## CryoSleep splits as LRL, improve=920.2004, (0 missing)
## RoomService < 0.5 to the right, improve=523.3930, (0 missing)
## Spa < 0.5 to the right, improve=514.4709, (0 missing)
## VRDeck < 0.5 to the right, improve=479.5694, (0 missing)
## ShoppingMall < 0.5 to the right, improve=302.4414, (0 missing)
## Surrogate splits:
## Spa < 0.5 to the right, agree=0.716, adj=0.187, (0 split)
## FoodCourt < 0.5 to the right, agree=0.701, adj=0.143, (0 split)
## VRDeck < 0.5 to the right, agree=0.696, adj=0.129, (0 split)
## RoomService < 0.5 to the right, agree=0.692, adj=0.119, (0 split)
## ShoppingMall < 0.5 to the right, agree=0.683, adj=0.092, (0 split)
##
## Node number 2: 5656 observations, complexity param=0.03406721
## predicted class=FALSE expected loss=0.3350424 P(node) =0.6506384
## class counts: 3761 1895
## probabilities: 0.665 0.335
## left son=4 (1432 obs) right son=5 (4224 obs)
## Primary splits:
## RoomService < 346.5 to the right, improve=121.39640, (0 missing)
## Spa < 266.5 to the right, improve=113.99320, (0 missing)
## Age < 12.5 to the right, improve=109.40550, (0 missing)
## FoodCourt < 1331 to the left, improve= 98.11980, (0 missing)
## VRDeck < 417.5 to the right, improve= 75.47684, (0 missing)
## Surrogate splits:
## HomePlanet splits as RRLR, agree=0.785, adj=0.151, (0 split)
## deck splits as RRRLRRRRR, agree=0.749, adj=0.007, (0 split)
## Age < 78.5 to the right, agree=0.747, adj=0.001, (0 split)
##
## Node number 3: 3037 observations
## predicted class=TRUE expected loss=0.1824169 P(node) =0.3493616
## class counts: 554 2483
## probabilities: 0.182 0.818
##
## Node number 4: 1432 observations
## predicted class=FALSE expected loss=0.1571229 P(node) =0.1647302
## class counts: 1207 225
## probabilities: 0.843 0.157
##
## Node number 5: 4224 observations, complexity param=0.03406721
## predicted class=FALSE expected loss=0.3953598 P(node) =0.4859082
## class counts: 2554 1670
## probabilities: 0.605 0.395
## left son=10 (1391 obs) right son=11 (2833 obs)
## Primary splits:
## Spa < 205 to the right, improve=168.00700, (0 missing)
## VRDeck < 135.5 to the right, improve=129.77700, (0 missing)
## Age < 12.5 to the right, improve= 76.46367, (0 missing)
## FoodCourt < 2507.5 to the left, improve= 63.32833, (0 missing)
## ShoppingMall < 627 to the left, improve= 59.33765, (0 missing)
## Surrogate splits:
## HomePlanet splits as RLRR, agree=0.695, adj=0.073, (0 split)
## deck splits as LRLRRRRLR, agree=0.684, adj=0.042, (0 split)
## FoodCourt < 3197.5 to the right, agree=0.676, adj=0.017, (0 split)
## VRDeck < 2052 to the right, agree=0.673, adj=0.006, (0 split)
## Age < 75.5 to the right, agree=0.672, adj=0.003, (0 split)
##
## Node number 10: 1391 observations
## predicted class=FALSE expected loss=0.194105 P(node) =0.1600138
## class counts: 1121 270
## probabilities: 0.806 0.194
##
## Node number 11: 2833 observations, complexity param=0.03406721
## predicted class=FALSE expected loss=0.4941758 P(node) =0.3258944
## class counts: 1433 1400
## probabilities: 0.506 0.494
## left son=22 (814 obs) right son=23 (2019 obs)
## Primary splits:
## VRDeck < 355 to the right, improve=185.97790, (0 missing)
## FoodCourt < 2069.5 to the left, improve= 64.45210, (0 missing)
## HomePlanet splits as LRRL, improve= 46.60726, (0 missing)
## ShoppingMall < 1540.5 to the left, improve= 38.47446, (0 missing)
## Age < 7.5 to the right, improve= 36.46439, (0 missing)
## Surrogate splits:
## FoodCourt < 10134.5 to the right, agree=0.715, adj=0.007, (0 split)
## Age < 68.5 to the right, agree=0.714, adj=0.004, (0 split)
## deck splits as RRLRRRRRR, agree=0.714, adj=0.004, (0 split)
## RoomService < 343 to the right, agree=0.713, adj=0.001, (0 split)
##
## Node number 22: 814 observations
## predicted class=FALSE expected loss=0.2088452 P(node) =0.09363856
## class counts: 644 170
## probabilities: 0.791 0.209
##
## Node number 23: 2019 observations
## predicted class=TRUE expected loss=0.3907875 P(node) =0.2322558
## class counts: 789 1230
## probabilities: 0.391 0.609
Bu R kodu, train_set veri çerçevesi üzerindeki
değişkenlere bağlı olarak bir karar ağacı modeli oluşturur, bu modelin
özet istatistiklerini görüntüler ve ağacı görselleştirir.
Bu R kodu, daha önce eğitilen karar ağacı modeli
(fit_tree) kullanılarak, test_1__set veri seti
üzerinde sınıflandırma tahminleri (preds) yapar.
type = "class" parametresi, tahminlerin sınıf etiketlerini
içeren bir vektör olarak döndürülmesini sağlar. Bu sayede, test veri
setindeki her bir gözlemin, oluşturulan karar ağacı tarafından
sınıflandırılması gerçekleştirilmiş olur.
Görüntüdeki kod, preds değişkenindeki TRUE ve FALSE değerlerini doğrudan y_pred değişkenine kopyalar.
Bu kod, y_pred değişkenini karakter dizisine çevirir ve Transported olarak adlandırır, test_1_$PassengerId değişkenini ise PassengerId olarak adlandırır.
Bu R kodu, PassengerId ve Transported
vektörlerini kullanarak bir veri çerçevesi oluşturur. Yolcu kimlik
numaralarını ve taşınıp taşınmadıklarını içeren bir tablo elde
edilir.
Bu R kodu, sample_submission nesnesini bir veri
çerçevesine dönüştürür. Eğer sample_submission zaten bir
veri çerçevesi ise işlemi tekrarlamaz; fakat başlangıçta başka bir veri
türü olarak tanımlandıysa, bu kod onu veri çerçevesine çevirir.
Bu R kodu, sample_submission veri çerçevesindeki
“Transported” sütunundaki metin verilerinin baş harfini büyük yapar.
Örneğin, “yes” ifadesini “Yes” olarak günceller.
Bu R kodu, sample_submission veri çerçevesini
“sample_submission_dt.csv” adlı bir CSV dosyasına yazma işlemini
gerçekleştirir. Satır numaralarını içermeyen, karakter dizilerini çift
tırnak içine almayan bir CSV dosyası oluşturur.
Random Forest
Bu R kodu, randomForest paketini kullanarak bir rastgele
orman modeli oluşturur. Bağımlı değişken olarak “Transported” ve diğer
tüm değişkenleri kullanarak bir sınıflandırma veya regresyon modeli
eğitir. Eğitim verileri train_set veri setinden alınır.
Oluşturulan model, fit_rf değişkeninde saklanır.
## MeanDecreaseGini
## HomePlanet 172.40127
## CryoSleep 418.37719
## Destination 92.39424
## Age 316.42404
## VIP 24.79306
## RoomService 440.06127
## FoodCourt 362.37155
## ShoppingMall 314.33922
## Spa 472.35728
## VRDeck 428.37632
## deck 254.74771
## side 72.19335
## aile 49.00750
Bu R kodu, fit_rf adlı rastgele orman modelinin değişken
önem sıralamasını elde eder. Bu sıralama, her değişkenin modelin
performansına olan katkısını gösterir.
Random Forest regresyon modelinin değişken önemini gösteren bir Varlık Önemi Grafiğidir. ‘MeanDecreaseGini’ eksenindeki değerler, her bir özelliğin model tahminlerini ne kadar iyileştirdiğini gösterir. Gini önemi, bir özelliğin rastgele orman ağaçlarında düğüm olarak kullanılma sıklığını ve etkinliğini ölçer. Grafikte ‘VIP’ en yüksek öneme sahipken, ‘Spa’ en düşük öneme sahip. Bu, ‘VIP’ özelliğinin hedef değişken üzerinde en güçlü etkiye sahip olduğunu ve ‘Spa’nın ise en az etkiye sahip olduğunu gösterir. Diğer değişkenler ’side’, ‘Destination’, ‘HomePlanet’, ‘deck’ gibi özellikler orta düzeyde öneme sahip görünüyor. Bu tür grafikler, özellik mühendisliği ve model optimizasyonu sırasında önemli bilgiler sağlar.
Bu R kodu, fit_rf adlı rastgele orman modelinin değişken
önem sıralamasını içeren bir grafiği çizer. Bu grafik, her değişkenin
modelin performansına olan katkısını görsel olarak gösterir.
Bu R kodu, fit_tree adlı karar ağacı modelini
kullanarak, test_1__set adlı test veri seti üzerinde
sınıflandırma tahminleri yapar. Elde edilen tahminler preds
adlı bir vektörde saklanır.
Bu kod, ‘preds’ isimli bir değişkenin değerleri ‘TRUE’ ise ‘y_pred’ değişkenine ‘TRUE’, aksi takdirde ‘FALSE’ atayan bir R koşullu atama işlemidir.
Bu kod, tahmin sonuçlarını (‘y_pred’) karakter dizisine dönüştürüp ‘Transported’ isimli bir değişkene atar ve ‘test_1’ veri setinden ‘PassengerId’ bilgisini başka bir değişkene kaydeder. Muhtemelen tahmin sonuçlarının bir raporunu veya gönderim dosyasını hazırlıyordur.
Bu kod ‘Transported’ değişkenini vektör formuna dönüştürür ve yine ‘Transported’ ismiyle kaydeder. R’da bu işlem, genellikle veri çerçevesi sütununu basit bir vektöre çevirmek için kullanılır.
Bu kod, ‘PassengerId’ ve ‘Transported’ değişkenlerini yan yana birleştirerek yeni bir veri çerçevesi oluşturur ve bu veri çerçevesini ‘sample_submission’ ismiyle kaydeder. Genellikle, bir tahmin modelinin çıktılarını sunum formatında hazırlamak için kullanılır.
Bu kod, ‘sample_submission’ isimli nesneyi bir veri çerçevesine dönüştürür ve aynı isimle kaydeder. Bu işlem, genellikle nesneleri R’da veri çerçevesi yapısına çevirmek için kullanılır.
Bu R kodu, ‘sample_submission’ veri çerçevesindeki ‘Transported’ sütununun değerlerini başlık biçimine (her kelimenin ilk harfini büyük yaparak) dönüştürür ve bu değişiklikleri aynı sütuna kaydeder.
Bu kod, ‘sample_submission’ veri çerçevesini “sample_submission_rf.csv” adlı bir CSV dosyası olarak kaydeder. Satır isimleri (‘row.names’) ve metin değerlerini tırnak içine almak (‘quote’) devre dışı bırakılmıştır.