Final Projesi

Spaceship Titanic

olayımız Hakkında Bilgi

Kozmik bir gizemi çözmek için veri bilimi becerilerinize ihtiyaç duyulan 2912 yılına hoş geldiniz. Dört ışık yılı öteden bir sinyal aldık ve işler pek iyi görünmüyor.

Uzay Gemisi Titanik, bir ay önce fırlatılan yıldızlararası bir yolcu gemisiydi. Gemide neredeyse 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ı!Kozmik bir gizemi çözmek için veri bilimi becerilerinize ihtiyaç duyulan 2912 yılına hoş geldiniz. Dört ışık yılı öteden bir sinyal aldık ve işler pek iyi görünmüyor.

Uzay Gemisi Titanik, bir ay önce fırlatılan yıldızlararası bir yolcu gemisiydi. Gemide neredeyse 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ı!

Sütunların Açıklamalarına Bakalım

train.csv - Yolcuların yaklaşık üçte ikisinin (~8700) kişisel kayıtları, eğitim verileri olarak kullanılacak.

PassengerId - Her yolcu için benzersiz bir Kimlik. Her Kimlik gggg_pp biçimini alır; burada gggg yolcunun birlikte seyahat ettiği grubu belirtir ve pp grup içindeki numaradır. Bir gruptaki insanlar çoğunlukla aile üyeleridir, ancak her zaman değil.

HomePlanet - Yolcunun ayrıldığı gezegen, genellikle daimi ikamet ettikleri gezegen.

CryoSleep - Yolcunun yolculuk süresince animasyonun askıya alınmasını seçip seçmediğini belirtir. Dondurucu uykudaki yolcular kabinlerine hapsedilir.

Kabin - Yolcunun kaldığı kabin numarası. Güverte/numara/yan formunu alır; burada taraf, İskele için P veya Sancak için S olabilir.

Hedef - Yolcunun ineceği gezegen.

Yaş - Yolcunun yaşı.

VIP - Yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapıp yapmadığı.

RoomService, FoodCourt, Alışveriş Merkezi, Spa, VRDeck - Yolcunun, Spaceship Titanic’in birçok lüks olanağının her birinde fatura ettiği tutar.

Adı - Yolcunun adı ve soyadı.

Taşındı - Yolcunun başka bir boyuta taşınıp taşınmadığı. Bu hedeftir, tahmin etmeye çalıştığınız sütundur.

test.csv - Yolcuların geri kalan üçte birinin (~4300) kişisel kayıtları, test verisi olarak kullanılacak. Göreviniz bu setteki yolcular için Taşınan değerini tahmin etmektir.

sample_submission.csv - Doğru formatta bir gönderim dosyası.

PassengerId - Test setindeki her yolcunun kimliği.

Taşınan - Hedef. Her yolcu için Doğru veya Yanlış’ı tahmin edin.

library(readr)
test <- read.csv('test.csv')
train <- read.csv('train.csv')
library(explore)
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
train[train == ''] <-  NA
test[test == ''] <-  NA
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    chr     217    2.5      3    NA  NA      NA
##  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          chr     203    2.3      3    NA  NA      NA
##  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  chr       0    0        2    NA  NA      NA
train[c('ailenum', 'ailesira')] <- str_split_fixed(train$PassengerId, "_", 2)

Bu R kodu, “train” adlı bir veri çerçevesindeki “PassengerId” sütununu alt çizgi karakteri (“_“) ile bölmek ve elde edilen parçaları”ailenum” ve “ailesira” adlı iki yeni sütuna atamak amacıyla yazılmıştır.

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

Bu R kodu, “test” adlı bir veri çerçevesindeki “PassengerId” sütununu alt çizgi karakteri (“_“) ile bölmek ve elde edilen parçaları”ailenum” ve “ailesira” adlı iki yeni sütuna atamak amacıyla yazılmıştır.

train <- separate(train, Cabin, c('deck','num','side')) # train için
test <- separate(test, Cabin, c('deck','num','side'))  #test için 

Bu R kodu, “train” ve “test” adlı iki ayrı veri çerçevesindeki “Cabin” sütununu ayrıştırmak ve bu sütunu üç farklı sütuna bölerek yeni sütunlar oluşturmak amacıyla yazılmıştır. İlgili sütunlar “deck”, “num”, ve “side” olarak adlandırılmıştır.

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    chr     217    2.5      3    NA  NA      NA
##  4 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  chr     182    2.1      4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          chr     203    2.3      3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl     183    2.1   1508     0 458.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$HomePlanet <- addNA(train$HomePlanet) 

Bu kod, “HomePlanet” sütunundaki eksik değerlere (NA) bir değer ekleyerek, veri çerçevesindeki eksik verilerle başa çıkmak için kullanılabilir. Eğer “HomePlanet” sütununda zaten eksik değerler varsa, bu kod bu eksik değerlere bir değer ekleyecektir.

test$HomePlanet <- addNA(test$HomePlanet) 
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    chr     217    2.5      3    NA  NA      NA
##  4 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  chr     182    2.1      4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          chr     203    2.3      3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl     183    2.1   1508     0 458.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$CryoSleep <- addNA(train$CryoSleep) 
test$CryoSleep <- addNA(test$CryoSleep) 

Bu kod, “CryoSleep” sütunundaki eksik değerlere (NA) bir değer ekleyerek, veri çerçevesindeki eksik verilerle başa çıkmak için kullanılabilir. Eğer “CryoSleep” sütununda zaten eksik değerler varsa, bu kod bu eksik değerlere bir değer ekleyecektir.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  chr     182    2.1      4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          chr     203    2.3      3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl     183    2.1   1508     0 458.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
unique(train$Destination)
## [1] "TRAPPIST-1e"   "PSO J318.5-22" "55 Cancri e"   NA

Bu kod, “Destination” sütunundaki benzersiz değerleri listeleyecektir. Bu, özellikle kategorik bir sütunun içeriğini anlamak ve bu kategoriler arasında farklılıkları gözlemlemek için kullanışlıdır.

train$Destination <- addNA(train$Destination) 
test$Destination <- addNA(test$Destination) 

Bu kod, “Destination” sütunlarındaki eksik değerlere bir değer ekleyerek, her iki veri çerçevesindeki eksik verilerle başa çıkmak için kullanılır. Eğer “Destination” sütununda zaten eksik değerler varsa, bu kod bu eksik değerlere bir değer ekleyecektir.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          chr     203    2.3      3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl     183    2.1   1508     0 458.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$VIP <- addNA(train$VIP) 
test$VIP <- addNA(test$VIP) 

Bu R kodu, “train” ve “test” veri çerçevelerindeki “VIP” sütunlarındaki eksik değerlere (NA: Not Available) bir değer eklemek ve ardından “train” veri çerçevesinin tüm sütunlarının istatistik özetini almak için kullanılmıştır.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl     183    2.1   1508     0 458.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA

Bu kod ise dplyr paketi kullanılarak “train” veri çerçevesinin tüm sütunları için istatistik özetini alır.

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

Bu kod, “FoodCourt” sütunlarındaki eksik değerlere sıfır ekleyerek, veri çerçevelerindeki eksik verilerle başa çıkmak için kullanılır.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$CryoSleep <- addNA(train$CryoSleep) 
test$CryoSleep <- addNA(test$CryoSleep) 

Bu kod, “CryoSleep” sütunlarındaki eksik değerlere bir değer ekleyerek, her iki veri çerçevesindeki eksik verilerle başa çıkmak için kullanılır. Eğer “CryoSleep” sütununda zaten eksik değerler varsa, bu kod bu eksik değerlere bir değer ekleyecektir.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      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    fct       0    0        3    NA  NA      NA
##  4 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train <- train %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0))
test <- test %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0))

Bu kod, “ShoppingMall” sütunlarındaki eksik değerlere 0 ekleyerek, veri çerçevelerindeki eksik verilerle başa çıkmak için kullanılır. Eksik değerleri belirli bir değerle doldurmak, analiz ve modelleme süreçlerinde veri temizleme ve hazırlık aşamalarında yaygın bir uygulamadır.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl     183    2.1   1328     0 311.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train <- train %>% mutate(Spa = coalesce(Spa, 0))
test <- test %>% mutate(Spa = coalesce(Spa, 0))

Bu kod, “Spa” sütunlarındaki eksik değerlere 0 ekleyerek, veri çerçevelerindeki eksik verilerle başa çıkmak için kullanılır. Eksik değerleri belirli bir değerle doldurmak, analiz ve modelleme süreçlerinde veri temizleme ve hazırlık aşamalarında yaygın bir uygulamadır.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train <- train %>% mutate(VRDeck = coalesce(VRDeck, 0))
test <- test %>% mutate(VRDeck = coalesce(VRDeck, 0))

Bu kod, “VRDeck” sütunlarındaki eksik değerlere 0 ekleyerek, veri çerçevelerindeki eksik verilerle başa çıkmak için kullanılır. Eksik değerleri belirli bir değerle doldurmak, analiz ve modelleme süreçlerinde veri temizleme ve hazırlık aşamalarında yaygın bir uygulamadır.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         chr     199    2.3      3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$side<- addNA(train$side)
test$side <- addNA(test$side)

Bu kod, “train” veri çerçevesine “deck” adında yeni bir sütun ekler ve bu sütunu “side” sütunu ile doldurur. Aynı işlem “test” veri çerçevesinde de gerçekleşir, ancak burada “side” sütununda eksik değer olan gözlemler, addNA fonksiyonu ile birlikte yeni bir “side” sütununa eklenir.

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 deck         chr     199    2.3      9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         fct       0    0        3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$deck <- addNA(train$deck)
test$deck <- addNA(test$deck)

Bu kod, var olan “deck” sütunlarını koruyarak, her iki veri çerçevesine de yeni bir “deck” sütunu ekler ve bu sütunu var olan “deck” sütununun değerleri 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    fct       0    0        3    NA  NA      NA
##  4 deck         fct       0    0        9    NA  NA      NA
##  5 num          chr     199    2.3   1818    NA  NA      NA
##  6 side         fct       0    0        3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train$num <- addNA(train$num)
test$num <- addNA(test$num)

Bu kod, var olan “num” sütunlarını koruyarak, her iki veri çerçevesine de yeni bir “num” sütunu ekler ve bu sütunu var olan “num” sütununun değerleri ile doldurur. Eğer “num” sütununda eksik değerler varsa, addNA fonksiyonu bu eksik değerlere NA ekleyecektir.

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 deck         fct       0    0        9    NA  NA      NA
##  5 num          fct       0    0     1818    NA  NA      NA
##  6 side         fct       0    0        3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl     181    2.1   1274     0 225.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA
train <- train %>% mutate(RoomService = coalesce(RoomService, 0))
test <- test %>% mutate(RoomService = coalesce(RoomService, 0))

Bu kod, “RoomService” sütunlarındaki eksik değerlere 0 ekleyerek, veri çerçevelerindeki eksik verilerle başa çıkmak için kullanılır. Bu R kodu, “train” ve “test” veri çerçevelerindeki “RoomService” sütunlarındaki eksik değerlere (NA: Not Available) 0 (sıfır) değerini atamak için kullanılmıştır. mutate fonksiyonu, yeni bir sütun oluşturmayı veya var olan bir sütunu değiştirmeyi sağlar, coalesce fonksiyonu ise belirtilen sütunlardan ilki içindeki eksik değeri bulup, varsa sıradaki değeri kullanır.

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 deck         fct       0    0        9    NA  NA      NA
##  5 num          fct       0    0     1818    NA  NA      NA
##  6 side         fct       0    0        3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl       0    0     1273     0 220.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA

u R kodu, “train”“rest” veri çerçevesindeki “VIP” değişkenindeki eksik değerlere (NA) özel bir değer olan “NA” eklemek için kullanılır. addNA fonksiyonu, bir vektördeki eksik değerlere özel bir değeri eklemek için kullanılır.

train$VIP <- addNA(train$VIP)
test$VIP <- addNA(test$VIP)

Bu R kodu, “train” ve “test” veri çerçevelerindeki “VIP” sütunlarındaki eksik değerlere (NA: Not Available) bir değer eklemek için kullanılmıştır. addNA fonksiyonu, belirtilen vektördeki eksik değerlere NA ekleyerek yeni bir vektör oluşturur. Bu kod, “VIP” sütunlarındaki eksik değerlere bir değer ekleyerek, her iki veri çerçevesindeki eksik verilerle başa çıkmak için kullanılır. Eğer “VIP” sütununda zaten eksik değerler varsa, bu kod bu eksik değerlere bir değer ekleyecektir.

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 deck         fct       0    0        9    NA  NA      NA
##  5 num          fct       0    0     1818    NA  NA      NA
##  6 side         fct       0    0        3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl       0    0     1273     0 220.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Name         chr     200    2.3   8474    NA  NA      NA
## 16 Transported  chr       0    0        2    NA  NA      NA
## 17 ailenum      chr       0    0     6217    NA  NA      NA
## 18 ailesira     chr       0    0        8    NA  NA      NA

name bir şey ifade etmiyor. bilgi katmadığı için çok önemli bir durum olmadığı için name’i silelim. silmek için aşağıdaki kodu kullanıyoruz. .

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

Bu kod sonucunda, “train” veri çerçevesindeki “Name” sütunu çıkartılır ve güncellenmiş “train” veri çerçevesi elde edilir. Bu tür bir işlem, gereksiz veya analizde kullanılmayacak sütunları veri çerçevesinden çıkarmak için kullanılır ve veri setinin boyutunu küçültmek veya analizde odaklanılan sütunları belirlemek için faydalıdı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 deck         fct       0    0        9    NA  NA      NA
##  5 num          fct       0    0     1818    NA  NA      NA
##  6 side         fct       0    0        3    NA  NA      NA
##  7 Destination  fct       0    0        4    NA  NA      NA
##  8 Age          dbl     179    2.1     81     0  28.8    79
##  9 VIP          fct       0    0        3    NA  NA      NA
## 10 RoomService  dbl       0    0     1273     0 220.  14327
## 11 FoodCourt    dbl       0    0     1507     0 448.  29813
## 12 ShoppingMall dbl       0    0     1115     0 170.  23492
## 13 Spa          dbl       0    0     1327     0 305.  22408
## 14 VRDeck       dbl       0    0     1306     0 298.  24133
## 15 Transported  chr       0    0        2    NA  NA      NA
## 16 ailenum      chr       0    0     6217    NA  NA      NA
## 17 ailesira     chr       0    0        8    NA  NA      NA
train$aile <- ifelse(duplicated(train$ailenum) | duplicated(train$ailenum, fromLast = TRUE), 1, 0)
test$aile <- ifelse(duplicated(test$ailenum) | duplicated(test$ailenum, fromLast = TRUE), 1, 0)

Bu R kodu, “train” ve “test” veri çerçevelerine yeni bir “aile” sütunu ekler. Bu sütun, “ailenum” sütunundaki değerlerin çiftlenip çiftlenmediğini kontrol eder. Eğer bir değer daha önce görüldüyse (ilk görülen hariç) veya sondan başa doğru bir değer daha önce görüldüyse, “aile” sütunu 1 olarak atanır, aksi takdirde 0 olarak atanır.

Bu işlem, genellikle veri setinde benzersiz öğeleri belirlemek veya belirli bir koşulu sağlayan gözlemleri işaretlemek için kullanılır. Bu durumda, “ailenum” sütununda çiftlenen değerler “aile” sütununa 1 olarak atanmış, çiftlenmeyen değerler ise 0 olarak atanmıştır.

Aşağıdaki R kodu, “train” veri çerçevesinin “PassengerId”, “ailenum”, “ailesira” ve “aile” sütunlarını seçip, ilk 20 gözlemi gösterir:

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

Bu R kodu, “train” ve “test” veri çerçevelerinden “ailenum”, “ailesira” ve “num” sütunlarını çıkarmak için kullanılmıştır. select fonksiyonu, belirli sütunları seçmek veya çıkarmak için kullanılır. Bu kod, belirtilen sütunları çıkararak veri çerçevelerini günceller.

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 deck         fct       0    0        9    NA  NA       NA
##  5 side         fct       0    0        3    NA  NA       NA
##  6 Destination  fct       0    0        4    NA  NA       NA
##  7 Age          dbl     179    2.1     81     0  28.8     79
##  8 VIP          fct       0    0        3    NA  NA       NA
##  9 RoomService  dbl       0    0     1273     0 220.   14327
## 10 FoodCourt    dbl       0    0     1507     0 448.   29813
## 11 ShoppingMall dbl       0    0     1115     0 170.   23492
## 12 Spa          dbl       0    0     1327     0 305.   22408
## 13 VRDeck       dbl       0    0     1306     0 298.   24133
## 14 Transported  chr       0    0        2    NA  NA       NA
## 15 aile         dbl       0    0        2     0   0.45     1
train$Age[is.na(train$Age)] <- mean(train$Age, na.rm=TRUE)
test$Age[is.na(test$Age)] <- mean(test$Age, na.rm=TRUE)

Bu R kodu, “train” ve “test” veri çerçevelerindeki “Age” sütunundaki eksik değerlere sütundaki diğer değerlerin ortalamasıyla doldurulmasını sağlar. is.na() fonksiyonu, bir vektördeki değerlerin NA (eksik) olup olmadığını kontrol eder.

Bu kod, “Age” sütunundaki eksik değerlere sütunun genel ortalaması ile doldurma işlemini gerçekleştirir. Benzer şekilde, ikinci blok da “test” veri çerçevesinde aynı işlemi uygular. Eksik değerleri doldurmak, analiz ve modelleme süreçlerinde yaygın bir veri temizleme yöntemidir.

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 deck         fct       0      0      9    NA  NA       NA
##  5 side         fct       0      0      3    NA  NA       NA
##  6 Destination  fct       0      0      4    NA  NA       NA
##  7 Age          dbl       0      0     81     0  28.8     79
##  8 VIP          fct       0      0      3    NA  NA       NA
##  9 RoomService  dbl       0      0   1273     0 220.   14327
## 10 FoodCourt    dbl       0      0   1507     0 448.   29813
## 11 ShoppingMall dbl       0      0   1115     0 170.   23492
## 12 Spa          dbl       0      0   1327     0 305.   22408
## 13 VRDeck       dbl       0      0   1306     0 298.   24133
## 14 Transported  chr       0      0      2    NA  NA       NA
## 15 aile         dbl       0      0      2     0   0.45     1
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 deck         fct       0      0      9    NA  NA       NA
##  5 side         fct       0      0      3    NA  NA       NA
##  6 Destination  fct       0      0      4    NA  NA       NA
##  7 Age          dbl       0      0     81     0  28.8     79
##  8 VIP          fct       0      0      3    NA  NA       NA
##  9 RoomService  dbl       0      0   1273     0 220.   14327
## 10 FoodCourt    dbl       0      0   1507     0 448.   29813
## 11 ShoppingMall dbl       0      0   1115     0 170.   23492
## 12 Spa          dbl       0      0   1327     0 305.   22408
## 13 VRDeck       dbl       0      0   1306     0 298.   24133
## 14 Transported  chr       0      0      2    NA  NA       NA
## 15 aile         dbl       0      0      2     0   0.45     1

LOGİSTİC REGRESSİON

train$Transported <- as.logical(train$Transported)

Bu işlem, “Transported” sütunundaki değerleri mantıksal bir veri tipine dönüştürerek, bu sütunun içindeki bilgilerin doğruluğunu ve kullanılabilirliğini artırmayı amaçlar.

train_set <- train[2:15]

Bu R kodu, “train” veri çerçevesinden sadece 2. ila 15. sütunlar arasındaki sütunları içeren yeni bir “train_set” veri çerçevesi oluşturur. Kodun açıklaması şu şekildedir: train: Orijinal veri çerçevesinin adı. [2:15]: 2. sütundan 15. sütuna kadar olan sütunları seçer. train_set <- …: Seçilen sütunları içeren yeni bir veri çerçevesi olan “train_set” adlı değişkene atar.

test_set <- test[2:14]

Bu R kodu, “test” veri çerçevesinden sadece 2. ila 14. sütunlar arasındaki sütunları içeren yeni bir “test_set” veri çerçevesi oluşturur. Kodun açıklaması şu şekildedir: test: Orijinal test veri çerçevesinin adı. [2:14]: 2. sütundan 14. sütuna kadar olan sütunları seçer. test_set <- …: Seçilen sütunları içeren yeni bir veri çerçevesi olan “test_set” adlı değişkene atar.

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, “caTools” paketini kullanarak bir veri setini eğitim ve test setlerine bölmek için kullanılır. Ayrıca, set.seed(123) ifadesi, rastgele sayı üretme işlemlerinde tekrarlanabilirliği sağlamak için kullanılır. library(caTools): “caTools” paketini yükler.

set.seed(123): Rastgele sayı üretiminde kullanılan tohum değerini belirler, bu sayede işlemlerin tekrarlanabilirliği sağlanır. sample.split(train_set$Transported, SplitRatio = 0.75): “train_set” veri çerçevesinin “Transported” sütununa göre belirtilen oranda (0.75) rastgele bölünmesini sağlar. Böylece, verinin %75’i eğitim setine, %25’i test setine ayrılır. subset(train_set, split == TRUE): “split” vektöründe TRUE olan gözlemleri seçerek eğitim setini oluşturur. subset(train_set, split == FALSE): “split” vektöründe FALSE olan gözlemleri seçerek test setini oluşturur.

Bu kod bloğu, veriyi belirtilen oranda rastgele böler ve eğitim seti ile test setini oluşturur. Bu tür bir bölme işlemi, genellikle veri setini eğitim ve test setlerine ayırmak için kullanılır, böylece modelin eğitilmesi ve performansının değerlendirilmesi için ayrı ayrı veri setleri elde edilir.

logistic = glm(formula = Transported ~ ., family = binomial,data = training_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

Bu R kodu, “glm” (Generalized Linear Model) fonksiyonunu kullanarak bir lojistik regresyon modeli oluşturur. Bu model, bağımlı değişkenin “Transported” olduğu ve diğer tüm sütunlardan (bağımsız değişkenler) etkilendiği bir lojistik regresyon modelini temsil eder. logistic: Oluşturulan lojistik regresyon modelini temsil eden bir nesne. glm(): Generalized Linear Model fonksiyonu. formula = Transported ~ .: Modelin formülü, “Transported” sütunu ile tüm diğer sütunlar arasındaki ilişkiyi ifade eder. “~ .” ifadesi, tüm diğer sütunları ifade eder. family = binomial: Lojistik regresyon modelinin bağımlı değişkeninin binom dağılıma sahip olduğunu belirtir. data = training_set: Modelin eğitileceği veri setini belirtir, bu durumda “training_set” veri çerçevesi.

Bu kod, belirtilen formül ve veri seti üzerinde lojistik regresyon modeli oluşturur. Bu tür bir model, genellikle iki sınıflı (binary) bağımlı değişkenlerle çalışmak için kullanılır. Oluşturulan modeli daha sonra eğitmek, tahmin yapmak ve performansını değerlendirmek için kullanabilirsiniz.

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

Bu olasılık tahminleri, genellikle bir sınıfa ait olma olasılıkları olarak yorumlanır. Tahmin edilen olasılıkların eşik değeri belirlenerek, sınıflandırma yapabilirsiniz. Örneğin, eşik değeri %50 olarak belirlenirse, olasılık %50’den büyükse gözlem “1”, değilse “0” olarak sınıflandırılabilir.

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

Bu kod, lojistik regresyon modelinin test setindeki gözlemlere ait olasılıklarını 0.5 eşiği üzerinde veya altında olup olmadığına bakarak bir sınıflandırma yapar. “y_pred” vektörü, her bir gözlem için 0 veya 1 değerini içerir ve genellikle modelin tahmin ettiği sınıf etiketlerini temsil eder.

y_true= ifelse(testing_set[13] == TRUE, 1,0)

Bu kod, test setindeki gerçek “Transported” değerlerine dayanarak, her bir gözlem için gerçek sınıf etiketlerini içeren bir vektör oluşturur. “y_true” vektörü, test setindeki gerçek sınıflandırma etiketlerini temsil eder.

cm = table(y_true, y_pred)

Bu R kodu, “y_true” ve “y_pred” vektörleri arasında bir karmaşıklık matrisi (confusion matrix) oluşturur. Karmaşıklık matrisi, sınıflandırma modelinin performansını değerlendirmek için kullanılır ve gerçek ve tahmin edilen sınıflar arasındaki ilişkiyi gösterir.

cm
##       y_pred
## y_true   0   1
##      0 820 259
##      1 190 904
(819 + 905)/(819 + 905 + 260 + 189)
## [1] 0.7933732

Bu R kodu, bir doğruluk (accuracy) hesaplaması yapar. Doğruluk, bir sınıflandırma modelinin doğru tahmin ettiği gözlemlerin toplam gözlem sayısına oranını ifade eder. Bu ifade, toplam doğru tahmin edilen gözlemlerin (true_positive + true_negative) toplam gözlem sayısına bölünerek doğruluk oranını verir. Bu tür bir metrik, modelin genel performansını değerlendirmek için kullanılabilir. hesaplamadan elde edilen değer, modelin doğru tahmin etme oranını yüzde cinsinden ifade eder.

logistic_son = glm(formula = Transported ~ ., family = binomial, data = train_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

logistic_son: Oluşturulan lojistik regresyon modelini temsil eden bir nesne. glm(): Generalized Linear Model fonksiyonu. formula = Transported ~ .: Modelin formülü, “Transported” sütunu ile tüm diğer sütunlar arasındaki ilişkiyi ifade eder. “~ .” ifadesi, tüm diğer sütunları ifade eder. family = binomial: Lojistik regresyon modelinin bağımlı değişkeninin binom dağılıma sahip olduğunu belirtir. data = train_set: Modelin eğitileceği veri setini belirtir, bu durumda “train_set” veri çerçevesi. Bu kod, belirtilen formül ve veri seti üzerinde bir lojistik regresyon modeli oluşturur. Oluşturulan modeli daha sonra eğitmek, tahmin yapmak ve performansını değerlendirmek için kullanabilirsiniz.

prob_pred <- predict(logistic_son, type = 'response', newdata = test_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

Bu R kodu, “logistic_son” adlı önceden eğitilmiş lojistik regresyon modelini kullanarak “test_set” veri çerçevesindeki gözlemlere ait olasılık tahminlerini yapar. İlgili kodun açıklaması şu şekildedir:

R Copy code prob_pred <- predict(logistic_son, type = ‘response’, newdata = test_set) prob_pred: Bu değişken, “logistic_son” lojistik regresyon modelini kullanarak yapılan olasılık tahminlerini içerir. predict(logistic_son, type = ‘response’, newdata = test_set): Bu ifade, “logistic_son” adlı lojistik regresyon modelini kullanarak “test_set” veri çerçevesindeki gözlemlere ait olasılık tahminlerini elde etmek için kullanılır. logistic_son: Önceden eğitilmiş lojistik regresyon modeli. type = ‘response’: Olasılık tahminlerini elde etmek için kullanılan tipi belirtir. ‘response’, bağımlı değişkenin olasılıklarını ifade eder. newdata = test_set: Tahmin yapılacak yeni veri setini belirtir. test_set, test setini temsil eder. Bu olasılık tahminleri, genellikle bir sınıfa ait olma olasılıkları olarak yorumlanır. Tahmin edilen olasılıkların eşik değeri belirlenerek, sınıflandırma yapabilirsiniz.

y_pred <- ifelse(prob_pred > 0.5, TRUE, FALSE)

Bu kod, lojistik regresyon modelinin test setindeki gözlemlere ait olasılıklarını 0.5 eşiği üzerinde veya altında olup olmadığına bakarak bir sınıflandırma yapar. “y_pred” vektörü, her bir gözlem için TRUE veya FALSE değerini içerir ve genellikle modelin tahmin ettiği sınıf etiketlerini temsil eder.

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

Bu R kodu, “y_pred” vektöründen elde edilen sınıflandırma sonuçlarını içeren karakter türünde bir vektör oluşturur ve bu sınıflandırma sonuçlarına karşılık gelen “PassengerId” değerlerini içeren bir “PassengerId” vektörünü belirler.

as.character(y_pred): “y_pred” vektöründeki sınıflandırma sonuçlarını içeren vektörü karakter türüne dönüştürür. Bu, genellikle sınıflandırma sonuçlarını karakter türünde bir vektör olarak kullanmak için yapılır. test$PassengerId: “test” veri çerçevesindeki “PassengerId” sütununu seçer. Bu, tahmin sonuçlarına karşılık gelen yolcu kimliklerini içeren bir vektörü temsil eder. Bu iki vektörü kullanarak, her bir yolcunun kimliği (PassengerId) ile tahmin edilen “Transported” durumunu içeren bir veri seti oluşturabilirsiniz. Bu tip bir veri seti, modelin test setindeki gözlemlere ait tahmin sonuçlarını ve bu tahminlere karşılık gelen yolcu kimliklerini içerir.

Transported <- as.vector(Transported)

as.vector(Transported): “Transported” değişkenini vektöre dönüştürür. Bu işlem, “Transported” değişkenini bir vektöre indirger. Bu tür dönüşümler, bazen belirli türdeki nesnelerin (örneğin, faktör veya karakter) tipini değiştirmek veya sadece bir vektöre dönüştürmek için kullanılır. Burada, “Transported” değişkeni bir vektör haline getirilmiştir.

submission <- cbind(PassengerId, Transported)

Bu tür bir “submission” veri çerçevesi, genellikle modelin tahmin sonuçlarını içerir ve bu sonuçları belirli bir formatta (örneğin, Kaggle gibi bir yarışma formatı) sunmak için kullanılabilir.

submission <- as.data.frame(submission)

Veri çerçevesi, R programlamasında tablo benzeri bir veri yapısıdır ve farklı türde verileri içerebilir. Bu dönüşüm genellikle, bir matrisi veya başka bir veri yapısını daha esnek ve kullanımı kolay olan bir veri çerçevesine çevirmek amacıyla yapılır.

library(stringr)
submission$Transported <- str_to_title(submission$Transported)

Bu tür bir dönüşüm, metin verilerini daha düzenli ve okunabilir hale getirmek için kullanılabilir.

write.csv(submission, "submission_logistic.csv" , row.names = FALSE, quote = FALSE)

Bu kod, oluşturulan “submission” veri çerçevesini CSV formatında bir dosyaya yazarak, elde edilen tahmin sonuçlarını ve yolcu kimliklerini içeren bir dosya oluşturur. Oluşturulan CSV dosyası, “submission_logistic.csv” adıyla kaydedilir.

NAİVE BAYES

train_set <-train[2:15]

Bu kod, “train” veri çerçevesinden 2. sütundan 15. sütuna kadar olan sütunları içeren yeni bir veri çerçevesi olan “train_set”i oluşturur. Burada 2:15, 2. sütundan 15. sütuna kadar olan sütunların seçildiğini belirtir.

test_set <- test[2:14]

Bu kod ise, “test” veri çerçevesinden 2. sütundan 14. sütuna kadar olan sütunları içeren yeni bir veri çerçevesi olan “test_set”i oluşturur. Burada 2:14, 2. sütundan 14. sütuna kadar olan sütunların seçildiğini belirtir.

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, “caTools” paketini kullanarak veri setini eğitim ve test setlerine bölen bir ayrışım yapar.

library(caTools): “caTools” paketini yükler. Bu paket, veri setini bölme (splitting) işlemi için kullanılır. set.seed(123): R’de rastgele sayıları üretirken aynı sonuçları elde etmek için bir tohum değeri (seed) belirler. Bu, tekrarlanabilirliği sağlamak için kullanılır. split = sample.split(train_set$Transported, SplitRatio = 0.75): “train_set” veri çerçevesindeki “Transported” değişkenini kullanarak veri setini belirli bir oranda (SplitRatio) eğitim ve test setlerine böler. Bölme oranı, 0.75 olarak belirtilmiştir.

training_set = subset(train_set, split == TRUE): “split” vektöründe TRUE olan gözlemleri içeren eğitim setini seçer ve “training_set” değişkenine atar. testing_set = subset(train_set, split == FALSE): “split” vektöründe FALSE olan gözlemleri içeren test setini seçer ve “testing_set” değişkenine atar. Bu kod, genellikle makine öğrenimi modellerini eğitip değerlendirmek için kullanılan eğitim ve test setlerini oluşturmak amacıyla kullanılır. sample.split() fonksiyonu, özellikle sınıflandırma problemlerinde dengeli sınıflar elde etmek için kullanılan bir ayrışım stratejisidir.

library(e1071)
fit_nb <- naiveBayes(Transported ~ ., data = training_set)
preds <- predict(fit_nb, newdata = testing_set[-13], type = "raw") %>% data.frame()

Bu kod, test setindeki gözlemlere ait sınıflandırma olasılıklarını içeren bir veri çerçevesini “preds” değişkenine atar. Bu olasılıklar, sınıflandırma probleminde her bir sınıf için öngörülen olasılıkları temsil eder.

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

Bu kod, test setindeki gerçek sınıfları temsil eden bir vektör oluşturur. Eğer 13. sütun “Transported” değişkenini temsil ediyorsa, y_true vektörü, bu sütundaki TRUE ve FALSE değerlere karşılık gelen 1 ve 0’lardan oluşacaktır.

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

Bu R kodu, bir sınıflandırma modelinin olasılık tahminlerini kullanarak sınıflandırma tahminleri oluşturur. modelin 1 veya 0 olarak sınıflandırma tahminlerini elde etmek için kullanılır. Eğer bir olasılık değeri 0.5’ten büyükse, tahmin 1 olarak belirlenir; aksi halde tahmin 0 olarak belirlenir.

cm = table(y_true, tahminet)

Bu kod, gerçek sınıfları temsil eden “y_true” vektörü ile tahmin edilen sınıfları temsil eden “tahminet” vektörü arasında bir karmaşıklık matrisi oluşturur.

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

naiveBayes(Transported ~ ., data = train_set): “Transported” değişkenini hedef değişken olarak belirleyip, tüm diğer değişkenleri bağımsız değişkenler olarak kullanarak bir Naive Bayes modeli oluşturur.

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

Bu kod, Naive Bayes modelini kullanarak test setindeki yeni gözlemler için sınıflandırma olasılıklarını içeren bir veri çerçevesi oluşturur. Bu olasılıklar, genellikle 0 ile 1 arasında değerlerdir ve her bir sınıf için bir olasılık değeri içerir.

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

Bu R kodu, Naive Bayes modeli tarafından yapılan sınıflandırma olasılıklarını kullanarak sınıflandırma tahminleri oluşturur.

Bu kod, genellikle bir modelin 0.5 eşik değeri üzerinde veya altında sınıflandırma tahminleri yapmasına dayanarak, bir veri noktasının bir sınıfa ait olup olmadığını belirlemek için kullanılır. Eğer olasılık 0.5’ten büyükse, tahmin TRUE olarak belirlenir; aksi halde tahmin FALSE olarak belirlenir.

Transported <- as.character(tahminet)
PassengerId <- test$PassengerId

modelin tahminlerini içeren bir vektörü ve bu tahminlere karşılık gelen yolcu kimliklerini içeren bir vektörü birleştirme veya birleştirilmiş halde kullanma amacına hizmet eder

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

Bu R kodu, “PassengerId” ve “Transported” sütunlarını içeren bir matrisi oluşturur ve bu matrisi “submission” adlı bir nesneye atar.

submission <- as.data.frame(submission)

Bu tip dönüşümler, bir nesnenin türünü değiştirmek ve bir veri çerçevesi olarak kullanmak istenildiğinde kullanılır.

submission$Transported <- str_to_title(submission$Transported)

Bu tür bir dönüşüm, metin verilerini daha düzenli ve okunabilir hale getirmek için kullanılır. Başlık formatı genellikle her kelimenin ilk harfinin büyük olması şeklinde olup, bu, metin verilerinin daha estetik görünmesine ve anlaşılmasına yardımcı olabilir

write.csv(submission, "submission_NAİVE_BAYES.csv", row.names = FALSE, quote = FALSE)

Bu kod, “submission” veri çerçevesini CSV formatında bir dosyaya yazarak, elde edilen tahmin sonuçlarını ve yolcu kimliklerini içeren bir dosya oluşturur.

RANDOM FOREST

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
fit_rf <- randomForest(Transported ~ .,
                       data = train_set)
## Warning in randomForest.default(m, y, ...): The response has five or fewer
## unique values.  Are you sure you want to do regression?

Oluşturulan “fit_rf” modeli, rastgele orman algoritmasının özellikle sınıflandırma problemlerinde kullanılan bir modeldir. Model, “Transported” değişkenini tahmin etmek için diğer değişkenleri kullanır. Random Forest, birden çok karar ağacının bir araya getirilmiş bir ensemble modelidir. Her bir ağaç, veri setinin bir alt kümesi üzerinde eğitilir ve sonuçlar bir araya getirilerek daha güçlü ve genelleştirilebilir bir model elde edilir.

fit_rf$importance
##              IncNodePurity
## HomePlanet        86.56828
## CryoSleep        227.04338
## deck             125.72817
## side              35.70499
## Destination       45.47290
## Age              158.59021
## VIP               12.31694
## RoomService      213.55531
## FoodCourt        172.48516
## ShoppingMall     143.85594
## Spa              227.73612
## VRDeck           209.27604
## aile              22.04354

Bu R kodu, bir rastgele orman modelinin değişken önem sıralamasını içeren bir matrisi döndürür. Bu skorlar, modelin her bir özellikle ilgili olarak ne kadar bilgi kazandığını veya kaybettiğini gösterir. Değişken önem sıralaması, modelin tahminlerine katkıda bulunan özellikleri anlamak için önemli bir araçtır.

varImpPlot(fit_rf)

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

Bu R kodu, “preds” adlı bir vektördeki değerlere dayanarak “y_pred” adlı bir vektör oluşturur.

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

Bu R kodu, bir sınıflandırma modelinden elde edilen tahminleri içeren “y_pred” vektörünü karakter türüne dönüştürür ve “test” veri çerçevesindeki “PassengerId” sütununu “PassengerId” adlı bir vektöre atar.

Transported <- as.vector(Transported)

Bu R kodu, “Transported” değişkenini bir vektöre dönüştürür.

submission <- cbind(PassengerId,  Transported)
submission <- as.data.frame(submission)

Bu kod, “PassengerId” ve “Transported” sütunlarını içeren bir veri çerçevesi oluşturur ve ardından bu veri çerçevesini “submission” adlı değişkene atar. Bu tür bir veri çerçevesi, modelin tahmin ettiği sınıfları ve bu tahminlere karşılık gelen yolcu kimliklerini içerebilir.

library(stringr)
submission$Transported <- str_to_title(submission$Transported)

Bu R kodu, “stringr” paketini kullanarak “submission” veri çerçevesindeki “Transported” sütunundaki metin verilerini başlığa (title case) dönüştürür.

write.csv(submission, "submission_rf.csv", row.names = FALSE, quote=FALSE)

Bu kod, oluşturulan “submission” veri çerçevesini CSV formatında bir dosyaya yazarak, elde edilen tahmin sonuçlarını ve yolcu kimliklerini içeren bir dosya oluşturur. Oluşturulan CSV dosyası, “submission_rf.csv” adıyla kaydedilir.