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

library(readr)
train <- read_csv("train.csv")
## 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.
test_1_ <- read_csv("test (1).csv")
## 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.

library(readr)
sample_submission <- read_csv("sample_submission.csv")
## 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

str(train)
## 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.

library(tidyverse)
## ── 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.

library(explore)

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.

train %>% describe_all()
## # 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

train[c('ailenum', 'ailesira')] <- str_split_fixed(train$PassengerId, "_",2)

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

test_1_[c('ailenum', 'ailesira')] <- str_split_fixed(test_1_$PassengerId, "_",2)

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.

train[c('deck', 'num', 'side')] <- str_split_fixed(train$Cabin, '/', 3)

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.

test_1_[c('deck', 'num', 'side')] <- str_split_fixed(test_1_$Cabin, '/', 3)

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.

train[train ==''] <- NA
test_1_[test_1_ ==''] <- NA

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.

train %>% describe_all()
## # 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
library(DataExplorer)
create_report(train)
## 
## 
## 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.

train <- train %>% select(-Cabin)

Bu kod, ‘train’ veri çerçevesinden ‘Cabin’ sütununu kaldırır.

test_1_ <- test_1_ %>% select(-Cabin)

Bu kod, ‘test_1_’ veri çerçevesinden ‘Cabin’ sütununu kaldırır.

unique(train$HomePlanet)
## [1] "Europa" "Earth"  "Mars"   NA

Bu kod, ‘train’ veri çerçevesindeki ‘HomePlanet’ sütununda bulunan benzersiz değerleri listeler.

train %>% describe_all()
## # 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
levels(train$HomePlanet)
## NULL

Bu kod, ‘HomePlanet’ sütununun faktör seviyelerini listeler.

train$HomePlanet <- addNA(train$HomePlanet)

Bu kod, ‘train’ veri çerçevesinin ‘HomePlanet’ sütununda eksik değerleri (NA) faktör seviyelerine ekler.

test_1_$HomePlanet <- addNA(test_1_$HomePlanet)

Bu kod, ‘test_1_’ veri çerçevesinin ‘HomePlanet’ sütununda eksik değerleri (NA) faktör seviyelerine ekler.

levels(train$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   NA

Bu kod, ‘train’ veri çerçevesinin ‘HomePlanet’ sütunundaki faktör seviyelerini görüntüler.

levels(train$HomePlanet)[is.na(levels(train$HomePlanet))] <- "NA"

Bu kod, ‘train’ veri çerçevesindeki ‘HomePlanet’ sütunundaki eksik faktör seviyelerini ‘NA’ metni ile doldurur.

levels(test_1_$HomePlanet)[is.na(levels(test_1_$HomePlanet))] <- "NA"

Bu kod, ‘test_1_’ veri çerçevesindeki ‘HomePlanet’ sütunundaki eksik faktör seviyelerini ‘NA’ metni ile doldurur.

levels(train$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   "NA"
train %>% describe_all()
## # 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.

train %>% describe_all()
## # 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
train$CryoSleep <- addNA(train$CryoSleep)

Bu kod, ‘train’ veri çerçevesindeki ‘CryoSleep’ sütununun faktör seviyelerine ‘NA’ değerini ekler.

test_1_$CryoSleep <- addNA(test_1_$CryoSleep)

Bu kod, ‘test_1_’ veri çerçevesindeki ‘CryoSleep’ sütununun faktör seviyelerine ‘NA’ değerini ekler.

levels(train$CryoSleep)[is.na(levels(train$CryoSleep))] <-"NA"

Bu kod, ‘train’ veri çerçevesindeki ‘CryoSleep’ sütununda, eğer ‘NA’ (eksik veri) bir kategori olarak tanımlanmamışsa, onu kategori olarak ekler.

levels(test_1_$CryoSleep)[is.na(levels(test_1_$CryoSleep))] <-"NA"

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.

train %>% describe_all()
## # 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
unique(train$Destination)
## [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.

train$Destination <- addNA(train$Destination)

Bu kod, ‘train’ veri çerçevesindeki ‘Destination’ sütununa eksik değerlerin (NA) da bir kategori olarak eklenmesini sağlar.

test_1_$Destination <- addNA(test_1_$Destination)

Bu kod, ‘test_1_’ veri çerçevesindeki ‘Destination’ sütununa eksik değerlerin (NA) da bir kategori olarak eklenmesini sağlar.

train$side <- addNA(train$side)

Bu kod, ‘train’ veri çerçevesindeki ‘Side’ sütunundaki faktör seviyelerine ‘NA’ (eksik veri) değerini bir kategori olarak ekler.

test_1_$side <- addNA(test_1_$side)

Bu kod, ‘test_1_’ veri çerçevesindeki ‘Side’ sütunundaki faktör seviyelerine ‘NA’ (eksik veri) değerini bir kategori olarak ekler.

levels(train$side)[is.na(levels(train$side))] <- "NA"

Bu kod, ‘train’ veri çerçevesinde ‘Side’ sütununda tanımlanmamış olan eksik değerleri, kategori listesine ‘NA’ olarak ekler.

levels(test_1_$side)[is.na(levels(test_1_$side))] <- "NA"

Bu kod, ‘test_1_’ veri çerçevesinde ‘Side’ sütununda tanımlanmamış olan eksik değerleri, kategori listesine ‘NA’ olarak ekler

train %>% describe_all()
## # 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
train$VIP <- addNA(train$VIP)

Kod, trainVIP adındaki bir veri kümesine eksik değerler ekliyor.

test_1_$VIP <- addNA(test_1_$VIP)

Kod, test_1_VIP adındaki bir veri kümesine eksik değerler ekliyor.

levels(train$VIP)[is.na(levels(train$VIP))] <- "NA"

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.

levels(test_1_$VIP)[is.na(levels(test_1_$VIP))] <- "NA"

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.

train %>% describe_all()
## # 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.

hist(train$FoodCourt)

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.

train <- train %>% mutate(FoodCourt = coalesce(FoodCourt, 0))

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.

test_1_ <- test_1_ %>% mutate(FoodCourt = coalesce(FoodCourt, 0))

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.

train %>% describe_all()
## # 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.

train %>% describe_all()
## # 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.

train <- train %>% select(-Name)

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.

test_1_ <- test_1_ %>% select(-Name)

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.

train %>% describe_all()
## # 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.

train$deck <- addNA(train$deck)

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.

test_1_$deck <- addNA(test_1_$deck)

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.

levels(train$deck)[is.na(levels(train$deck))] <- "na"

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.

levels(test_1_$deck)[is.na(levels(test_1_$deck))] <- "na"

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.

train %>% describe_all()
## # 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.

test_1_ %>% describe_all()
## # 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.

train$aile <- ifelse(duplicated(train$ailenum) | duplicated(train$ailenum,fromLast = TRUE), 1, 0)

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.

head(train[, c("PassengerId", "ailenum", "ailesira", "aile")], 20)
## # 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.

train <- train %>% select(-c(ailenum, ailesira, num))

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.

test_1_ <- test_1_ %>% select(-c(ailenum, ailesira, num))

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.

train %>% describe_all()
## # 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
test_1_ %>% describe_all()
## # 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.

train_set <- train[2:15]

Bu kod, ‘train’ adlı veri setinin 2. ve 15. sütunları arasındaki verileri ‘train_set’ adlı yeni bir değişkene atıyor.

test_1__set <- test_1_[2:14]

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.

logistic = glm(formula = Transported ~ .,
               family = binomial,
               data = training_set )
## 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.

prob_pred = predict(logistic, type = 'response', newdata = testing_set[-11])
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
y_pred = ifelse(prob_pred > 0.5, 1, 0)

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.

y_true <- ifelse(testing_set[11] == TRUE, 1, 0)

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.

y_pred = ifelse(prob_pred > 0.5,1, 0)

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.

cm = table(y_true, y_pred)

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.

cm
##       y_pred
## y_true   0   1
##      0 819 260
##      1 189 905
(819+905)/(819+905+260+189)
## [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

logistic_son = glm(formula = Transported ~ .,
                   family = binomial,
                   data = train_set)
## 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.

prob_pred = predict(logistic_son, type = 'response', newdata = test_1__set)
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
y_pred = ifelse(prob_pred > 0.5, TRUE, FALSE)

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.

Transported <- as.character(y_pred)
PassengerId <- test_1_$PassengerId

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.

Transported <- as.vector(Transported)

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.

sample_submission <- cbind(PassengerId, Transported)

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.

sample_submission <- as.data.frame(sample_submission)

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.

sample_submission$Transported <- str_to_title(sample_submission$Transported)

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.

write.csv(sample_submission, "sample_sumbission_logistic.csv", row.names = FALSE,
          quote=FALSE)

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,

y_pred = ifelse(preds$TRUE. > 0.5, 1,0)

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.

cm = table(y_true, y_pred)

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.

cm
##       y_pred
## y_true    0    1
##      0  510  569
##      1   78 1016
(510 + 1016)/(510 + 1016+ 78+ 569)
## [1] 0.7022549
nb_son = naiveBayes(Transported ~ ., data = train_set)

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.

preds <- predict(nb_son, newdata = test_1__set, type = "raw") %>%
  data.frame()

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.

y_pred = ifelse(preds$TRUE. > 0.5, TRUE, FALSE)

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.

Transported <- as.character(y_pred)
PassengerId <- test_1_$PassengerId

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.

Transported <- as.vector(Transported)

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.

sample_submission <- cbind(PassengerId, Transported)

Bu kod, PassengerId ve Transported vektörlerini birleştirerek sample_submission isimli yeni bir matris oluşturur.

sample_submission <- as.data.frame(sample_submission)

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.

sample_submission$Transported <- str_to_title(sample_submission$Transported)

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.

write.csv(sample_submission, "sample_submission_nb.csv", row.names = FALSE, quote = FALSE)

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.

preds <- predict(fit_svm, newdata = testing_set, type = "raw") %>%
  data.frame()

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.

y_pred = ifelse(preds$. == TRUE,1, 0)

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.

cm = table(y_true, y_pred)

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.

cm
##       y_pred
## y_true   0   1
##      0 847 232
##      1 198 896
(847 + 896)/(847 + 896 + 198 + 232)
## [1] 0.8021169
svm_son = svm(Transported ~ ., data =  train_set,
              type = 'C-classification',
              kernel = 'radial')

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.

preds <- predict(svm_son, newdata = test_1__set, type = "raw") %>%
  data.frame()

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.

y_pred = preds$.

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.

Transported <- as.character(y_pred)
PassengerId <- test_1_$PassengerId

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.

Transported <- as.vector(Transported)

Bu R kodu, Transported değişkenini vektör tipine dönüştürerek veri tipini uygun hale getirir.

sample_submission <- cbind(PassengerId, Transported)
## 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.

sample_submission <- as.data.frame(sample_submission)

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.

sample_submission$Transported <- str_to_title(sample_submission$Transported)

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.

write.csv(sample_submission, "samp_sub_svm.csv", row.names = FALSE, quote = FALSE)

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;

svm_ker_son = svm(Transported ~., data = train_set,
                  type = 'C-classification',
              kernel = 'radial')

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.

preds <- predict(svm_ker_son, newdata = test_1__set, type = "raw") %>%
  data.frame()

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.

y_pred = preds$.

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.

Transported <- as.character(y_pred)
PassengerId <- test_1_$PassengerId

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 <- as.vector(Transported)

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.

sample_submission <- cbind(PassengerId, Transported)
## 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.

sample_submission <- as.data.frame(sample_submission)

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.

sample_submission$Transported <- str_to_title(sample_submission$Transported)

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.

write.csv(sample_submission, "sub_kernelsvm.csv", row.names = FALSE, quote = FALSE)

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.

library(rpart)
library(rpart.plot)
library(randomForest)
## 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
library(caret)
## 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.

fit_tree <- rpart(Transported ~ ., data = training_set)
summary(fit_tree)
## 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
rpart.plot(fit_tree)

##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

preds = predict(fit_tree, newdata = testing_set[-11], type = "class")

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.

y_pred = ifelse(preds == TRUE, 1, 0)

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.

cm = table(y_true, y_pred)

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.

cm
##       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.

(735 + 924)/2173
## [1] 0.7634607
fit_tree <- rpart(Transported ~ ., data = train_set)
summary(fit_tree)
## 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
rpart.plot(fit_tree)

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.

preds = predict(fit_tree, newdata = test_1__set, type = "class")

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.

y_pred = ifelse(preds == TRUE, TRUE, FALSE)

Görüntüdeki kod, preds değişkenindeki TRUE ve FALSE değerlerini doğrudan y_pred değişkenine kopyalar.

Transported <- as.character(y_pred)
PassengerId <- test_1_$PassengerId

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.

Transported <- as.vector(Transported)
sample_submission <- cbind(PassengerId, Transported)

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.

sample_submission <- as.data.frame(sample_submission)

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.

sample_submission$Transported <- str_to_title(sample_submission$Transported)

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.

write.csv(sample_submission, "sample_submission_dt.csv", row.names = FALSE, quote = FALSE)

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

fit_rf <- randomForest(Transported ~ .,
                       data = train_set)

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.

fit_rf$importance
##              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.

varImpPlot(fit_rf)

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.

preds = predict(fit_tree, newdata = test_1__set, type = "class")

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.

y_pred = ifelse(preds == TRUE, TRUE, FALSE)

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.

Transported <- as.character(y_pred)
PassengerId <- test_1_$PassengerId

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.

Transported <- as.vector(Transported)

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.

sample_submission <- cbind(PassengerId, Transported)

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.

sample_submission <- as.data.frame(sample_submission)

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.

sample_submission$Transported <- str_to_title(sample_submission$Transported)

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.

write.csv(sample_submission, "sample_submission_rf.csv", row.names = FALSE, quote = FALSE)

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.