FINAL PROJESI

1910504609

SPACESHIP TITANIC

Spaceship Titanic, Douglas Adams’ın yazdığı bir bilgisayar oyunudur. 1998’de piyasaya sürülerek oyuncuları, uzay gemisi versiyonu olan Titanic’te bir yolcu olarak uyanıp geminin sırlarını çözmeye yönlendirir. Oyun, absürd ve mizahi öğeler içerir ve Douglas Adams’ın karakteristiğini yansıtır.

library(readr)
train <- read_csv("train.csv")

“train.csv” adlı CSV dosyasını okumak için readr kütüphanesini kullanır. Ayrıca, options(message=FALSE, warning=FALSE) ifadesi, kodun çalıştırılması sırasında mesajları ve uyarıları görüntülememek için kullanılır.

library(readr)
test <- read_csv("test.csv")

“test.csv” adlı CSV dosyasını okumak için readr kütüphanesini kullanır. Ayrıca, options(message=FALSE, warning=FALSE) ifadesi, kodun çalıştırılması sırasında mesajları ve uyarıları görüntülememek için kullanılır.

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>
str(test)
## spc_tbl_ [4,277 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ PassengerId : chr [1:4277] "0013_01" "0018_01" "0019_01" "0021_01" ...
##  $ HomePlanet  : chr [1:4277] "Earth" "Earth" "Europa" "Europa" ...
##  $ CryoSleep   : logi [1:4277] TRUE FALSE TRUE FALSE FALSE FALSE ...
##  $ Cabin       : chr [1:4277] "G/3/S" "F/4/S" "C/0/S" "C/1/S" ...
##  $ Destination : chr [1:4277] "TRAPPIST-1e" "TRAPPIST-1e" "55 Cancri e" "TRAPPIST-1e" ...
##  $ Age         : num [1:4277] 27 19 31 38 20 31 21 20 23 24 ...
##  $ VIP         : logi [1:4277] FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ RoomService : num [1:4277] 0 0 0 0 10 0 0 0 0 0 ...
##  $ FoodCourt   : num [1:4277] 0 9 0 6652 0 ...
##  $ ShoppingMall: num [1:4277] 0 0 0 0 635 263 0 0 0 0 ...
##  $ Spa         : num [1:4277] 0 2823 0 181 0 ...
##  $ VRDeck      : num [1:4277] 0 0 0 585 0 60 0 0 0 0 ...
##  $ Name        : chr [1:4277] "Nelly Carsoning" "Lerome Peckers" "Sabih Unhearfus" "Meratz Caltilter" ...
##  - 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()
##   .. )
##  - attr(*, "problems")=<externalptr>
head(train)
## # A tibble: 6 × 14
##   PassengerId HomePlanet CryoSleep Cabin Destination     Age VIP   RoomService
##   <chr>       <chr>      <lgl>     <chr> <chr>         <dbl> <lgl>       <dbl>
## 1 0001_01     Europa     FALSE     B/0/P TRAPPIST-1e      39 FALSE           0
## 2 0002_01     Earth      FALSE     F/0/S TRAPPIST-1e      24 FALSE         109
## 3 0003_01     Europa     FALSE     A/0/S TRAPPIST-1e      58 TRUE           43
## 4 0003_02     Europa     FALSE     A/0/S TRAPPIST-1e      33 FALSE           0
## 5 0004_01     Earth      FALSE     F/1/S TRAPPIST-1e      16 FALSE         303
## 6 0005_01     Earth      FALSE     F/0/P PSO J318.5-22    44 FALSE           0
## # ℹ 6 more variables: FoodCourt <dbl>, ShoppingMall <dbl>, Spa <dbl>,
## #   VRDeck <dbl>, Name <chr>, Transported <lgl>
head(test)
## # A tibble: 6 × 13
##   PassengerId HomePlanet CryoSleep Cabin Destination   Age VIP   RoomService
##   <chr>       <chr>      <lgl>     <chr> <chr>       <dbl> <lgl>       <dbl>
## 1 0013_01     Earth      TRUE      G/3/S TRAPPIST-1e    27 FALSE           0
## 2 0018_01     Earth      FALSE     F/4/S TRAPPIST-1e    19 FALSE           0
## 3 0019_01     Europa     TRUE      C/0/S 55 Cancri e    31 FALSE           0
## 4 0021_01     Europa     FALSE     C/1/S TRAPPIST-1e    38 FALSE           0
## 5 0023_01     Earth      FALSE     F/5/S TRAPPIST-1e    20 FALSE          10
## 6 0027_01     Earth      FALSE     F/7/P TRAPPIST-1e    31 FALSE           0
## # ℹ 5 more variables: FoodCourt <dbl>, ShoppingMall <dbl>, Spa <dbl>,
## #   VRDeck <dbl>, Name <chr>

Train ve test veri setindeki “HomePlanet” sütununda bulunan benzersiz (tekrarlanmayan) değerlerin sayısını verendir.”HomePlanet”sütununda kaç farklı ev gezegeni olduğunu bakacağız

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

Train ve test veri setindeki “CryoSleep” sütununda bulunan benzersiz (tekrarlanmayan) değerleri döndürendir.”CryoSleep” sütununda hangi uyku modu değerlerinin mevcut olduğunu öğreneceğiz.

unique(train$CryoSleep)
## [1] FALSE  TRUE    NA
unique(test$CryoSleep)
## [1]  TRUE FALSE    NA

Train ve test veri setindeki “Destination” sütununda bulunan benzersiz (tekrarlanmayan) değerleri döndürendir.”Destination” sütununda hangi hedeflerin olduğunu öğreneceğiz ve onu kullanarak farklı seyahat noktalarının isimlerini alabiliriz.

unique(train$Destination)
## [1] "TRAPPIST-1e"   "PSO J318.5-22" "55 Cancri e"   NA
unique(test$Destination)
## [1] "TRAPPIST-1e"   "55 Cancri e"   "PSO J318.5-22" NA
train$HomePlanet <- addNA(train$HomePlanet)

HomePlanet adlı bir sütunu kontrol eder ve eksik (NA) değerler bulunursa, addNA fonksiyonu kullanarak bu değerlere “NA” ekler.

test$HomePlanet <- addNA(test$HomePlanet)

HomePlanet adlı bir sütunu kontrol eder ve eksik (NA) değerler bulunursa, addNA fonksiyonu kullanarak bu değerlere “NA” ekler.

train$Destination <- addNA(train$Destination)

train veri çerçevesindeki Destination sütunundaki eksik değerleri kontrol eder ve addNA fonksiyonunu kullanarak bu eksik değerlere “NA” ekler. Özetle, eğer Destination sütununda eksik bir değer varsa, bu değerler “NA” ile değiştirilir.

test$Destination <- addNA(test$Destination)

test veri çerçevesindeki Destination sütunundaki eksik değerleri kontrol eder ve addNA fonksiyonunu kullanarak bu eksik değerlere “NA” ekler. Özetle, eğer Destination sütununda eksik bir değer varsa, bu değerler “NA” ile değiştirilir.

train$CryoSleep <- addNA(train$CryoSleep)

Train veri çerçevesindeki CryoSleep sütunu kontrol ediliyor. Eğer bu sütundaki değerlerden herhangi biri eksikse, addNA fonksiyonu kullanılarak eksik değerlere “NA” ekleniyor. Yani, CryoSleep sütunundaki eksik değerler “NA” ile değiştiriliyor.

test$CryoSleep <- addNA(test$CryoSleep)

Test veri çerçevesindeki CryoSleep sütunu kontrol ediliyor. Eğer bu sütundaki değerlerden herhangi biri eksikse, addNA fonksiyonu kullanılarak eksik değerlere “NA” ekleniyor. Yani, CryoSleep sütunundaki eksik değerler “NA” ile değiştiriliyor.

library(dplyr)
library(tidyr)
train <- train %>% group_by(HomePlanet,Destination) %>%
  mutate(Age = replace_na(Age,mean(Age, na.rm = TRUE)))

dplyr ve tidyr kütüphanelerini kullanarak train veri çerçevesindeki eksik Age değerlerini gruplara ayırarak doldurma işlemi yapılıyor. Her grup içindeki eksik değerler, o gruptaki diğer değerlerin ortalamasıyla dolduruluyor. Bu, eksik değerleri daha anlamlı bir şekilde doldurma yöntemidir.

test <- test %>% group_by(HomePlanet,Destination) %>%
  mutate(Age = replace_na(Age,mean(Age, na.rm = TRUE)))

dplyr ve tidyr kütüphanelerini kullanarak test veri çerçevesindeki eksik Age değerlerini gruplara ayırarak doldurma işlemi yapılıyor. Her grup içindeki eksik değerler, o gruptaki diğer değerlerin ortalamasıyla dolduruluyor. Bu, eksik değerleri daha anlamlı bir şekilde doldurma yöntemidir.

train$VIP <- addNA(train$VIP)

train veri çerçevesindeki VIP adlı sütunu kontrol ediyor. Eğer bu sütundaki değerlerden herhangi biri eksik (NA) ise, addNA fonksiyonu kullanılarak eksik değerlere “NA” ekleniyor. Yani, eğer VIP sütununda bir eksik değer varsa, bu eksik değerler “NA” ile değiştirilir

test$VIP <- addNA(test$VIP)

test veri çerçevesindeki VIP adlı sütunu kontrol ediyor. Eğer bu sütundaki değerlerden herhangi biri eksik (NA) ise, addNA fonksiyonu kullanılarak eksik değerlere “NA” ekleniyor. Yani, eğer VIP sütununda bir eksik değer varsa, bu eksik değerler “NA” ile değiştirilir

train <- train %>% 
  mutate(RoomService=coalesce(RoomService, 0),
         FoodCourt=coalesce(FoodCourt, 0),
         ShoppingMall=coalesce(ShoppingMall, 0),
         Spa=coalesce(Spa,0),
         VRDeck=coalesce(VRDeck,0))

Eksik değerler belirli sütunlarda 0 ile dolduruluyor. Bu işlem RoomService, FoodCourt, ShoppingMall, Spa ve VRDeck sütunlarını etkiliyor. Coalesce fonksiyonu eksik değerleri 0 ile değiştiriyor.

test <- test %>% 
  mutate(RoomService=coalesce(RoomService, 0),
         FoodCourt=coalesce(FoodCourt, 0),
         ShoppingMall=coalesce(ShoppingMall, 0),
         Spa=coalesce(Spa,0),
         VRDeck=coalesce(VRDeck,0))

Eksik değerler belirli sütunlarda 0 ile dolduruluyor. Bu işlem RoomService, FoodCourt, ShoppingMall, Spa ve VRDeck sütunlarını etkiliyor. Coalesce fonksiyonu eksik değerleri 0 ile değiştiriyor.

library(tidyverse)

Tidyverse, R ortamına veri manipülasyonu ve görselleştirme için bir dizi paket ekler. Bu koleksiyon, dplyr, ggplot2, tidyr, readr ve diğer birçok paketi içerir ve veri analizi ve grafik oluşturmayı daha etkili hale getirir

library(explore)
train[c('ailenum','ailesıra')] <- str_split_fixed(train$PassengerId,"_",2)

train setindeki PassengerId sütunundaki değerleri “_” karakterini kullanarak ayırır. Daha sonra ortaya çıkan parçaları ailenum ve ailesıra adlı iki yeni sütunda saklar. Örneğin, PassengerId sütunu “123_456” değerini içeriyorsa, ailenum sütunu “123” değerini ve ailesıra sütunu “456” değerini alır.

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

test setindeki PassengerId sütunundaki değerleri “_” karakterini kullanarak ayırır. Daha sonra ortaya çıkan parçaları ailenum ve ailesıra adlı iki yeni sütunda saklar. Örneğin, PassengerId sütunu “123_456” değerini içeriyorsa, ailenum sütunu “123” değerini ve ailesıra sütunu “456” değerini alır.

train <- train[,c(15,16,1:14)]

Train veri çerçevesi, sütunları belirli bir sırayla yeniden düzenleyerek yerleştiriyor. Özellikle, sıralama 15. sütundan başlıyor, ardından 16. sütuna geçiyor ve son olarak 1 ile 14. sütunlar yer alıyo

test <- test[,c(14,15,1:13)]

Test veri çerçevesi, sütunları belirli bir sırayla yeniden düzenleyerek yerleştiriyor. Özellikle, sıralama 15. sütundan başlıyor, ardından 16. sütuna geçiyor ve son olarak 1 ile 14. sütunlar yer alıyo

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

train metin, bir veri kümesinin “Cabin” sütunu üzerinde gerçekleştirilen bir işlemi göstermektedir. Bu sütundaki değerler “/” karakteri kullanılarak üç parçaya ayrılır ve bu parçalar daha sonra “deck”, “num” ve “side” adlı üç yeni sütuna tahsis edilir.

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

test metin, bir veri kümesinin “Cabin” sütunu üzerinde gerçekleştirilen bir işlemi göstermektedir. Bu sütundaki değerler “/” karakteri kullanılarak üç parçaya ayrılır ve bu parçalar daha sonra “deck”, “num” ve “side” adlı üç yeni sütuna tahsis edilir.

train <- train[,c(1:6,17,18,19,7:16)]

Train veri çerçevesindeki sütunlar belirli bir sırayla yerleştirilir: 1-6, 17-19, 7-16.

test <- test[,c(1:6,16,17,18,7:15)]

Test veri çerçevesindeki sütunlar belirli bir sırayla yerleştirilir: 1-6, 17-19, 7-16.

train[train == ""] <- NA

Eğitim sırasında boş hücreler NA ile değiştirilir. Bu, veri temizleme sürecinde sıkça kullanılır ve veriyi daha tutarlı hale getirmek için boş değerleri NA ile değiştirir.

train[train == ""] <- NA

Eğitim sırasında boş hücreler NA ile değiştirilir. Bu, veri temizleme sürecinde sıkça kullanılır ve veriyi daha tutarlı hale getirmek için boş değerleri NA ile değiştirir.

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 ailenum      chr       0    0     6217    NA  NA      NA
##  2 ailesıra     chr       0    0        8    NA  NA      NA
##  3 PassengerId  chr       0    0     8693    NA  NA      NA
##  4 HomePlanet   fct       0    0        4    NA  NA      NA
##  5 CryoSleep    fct       0    0        3    NA  NA      NA
##  6 Cabin        chr     199    2.3   6561    NA  NA      NA
##  7 deck         chr     199    2.3      9    NA  NA      NA
##  8 num          chr     199    2.3   1818    NA  NA      NA
##  9 side         chr     199    2.3      3    NA  NA      NA
## 10 Destination  fct       0    0        4    NA  NA      NA
## 11 Age          dbl       0    0       91     0  28.8    79
## 12 VIP          fct       0    0        3    NA  NA      NA
## 13 RoomService  dbl       0    0     1273     0 220.  14327
## 14 FoodCourt    dbl       0    0     1507     0 448.  29813
## 15 ShoppingMall dbl       0    0     1115     0 170.  23492
## 16 Spa          dbl       0    0     1327     0 305.  22408
## 17 VRDeck       dbl       0    0     1306     0 298.  24133
## 18 Name         chr     200    2.3   8474    NA  NA      NA
## 19 Transported  lgl       0    0        2     0   0.5     1
test %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 ailenum      chr       0    0     3063    NA  NA      NA
##  2 ailesıra     chr       0    0        8    NA  NA      NA
##  3 PassengerId  chr       0    0     4277    NA  NA      NA
##  4 HomePlanet   fct       0    0        4    NA  NA      NA
##  5 CryoSleep    fct       0    0        3    NA  NA      NA
##  6 Cabin        chr     100    2.3   3266    NA  NA      NA
##  7 deck         chr     100    2.3      9    NA  NA      NA
##  8 num          chr       0    0     1506    NA  NA      NA
##  9 side         chr       0    0        3    NA  NA      NA
## 10 Destination  fct       0    0        4    NA  NA      NA
## 11 Age          dbl       0    0       91     0  28.7    79
## 12 VIP          fct       0    0        3    NA  NA      NA
## 13 RoomService  dbl       0    0      842     0 215.  11567
## 14 FoodCourt    dbl       0    0      902     0 429.  25273
## 15 ShoppingMall dbl       0    0      715     0 173.   8292
## 16 Spa          dbl       0    0      833     0 296.  19844
## 17 VRDeck       dbl       0    0      796     0 305.  22272
## 18 Name         chr      94    2.2   4177    NA  NA      NA
train$aile <- ifelse(duplicated(train$ailenum) | duplicated(train$ailenum, fromLast = TRUE),1,0 )

Yeni bir sütun, tren veri çerçevesine eklenir. Bu sütun aile numarasını tekrar edenleri işaretler: tekrar eden varsa, 1 atanır; aksi halde, 0 atanır.

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

Yeni bir sütun, tren veri çerçevesine eklenir. Bu sütun aile numarasını tekrar edenleri işaretler: tekrar eden varsa, 1 atanır; aksi halde, 0 atanır.

head(train[,c("PassengerId","ailenum","aile")],20 )
## # A tibble: 20 × 3
##    PassengerId ailenum  aile
##    <chr>       <chr>   <dbl>
##  1 0001_01     0001        0
##  2 0002_01     0002        0
##  3 0003_01     0003        1
##  4 0003_02     0003        1
##  5 0004_01     0004        0
##  6 0005_01     0005        0
##  7 0006_01     0006        1
##  8 0006_02     0006        1
##  9 0007_01     0007        0
## 10 0008_01     0008        1
## 11 0008_02     0008        1
## 12 0008_03     0008        1
## 13 0009_01     0009        0
## 14 0010_01     0010        0
## 15 0011_01     0011        0
## 16 0012_01     0012        0
## 17 0014_01     0014        0
## 18 0015_01     0015        0
## 19 0016_01     0016        0
## 20 0017_01     0017        1

Train veri çerçevesinden sadece PassengerId, ailenum ve aile sütunlarını alıp ilk 20 satırını gösterir

head(test[,c("PassengerId","ailenum","aile")],20 )
## # A tibble: 20 × 3
##    PassengerId ailenum  aile
##    <chr>       <chr>   <dbl>
##  1 0013_01     0013        0
##  2 0018_01     0018        0
##  3 0019_01     0019        0
##  4 0021_01     0021        0
##  5 0023_01     0023        0
##  6 0027_01     0027        0
##  7 0029_01     0029        0
##  8 0032_01     0032        1
##  9 0032_02     0032        1
## 10 0033_01     0033        0
## 11 0037_01     0037        0
## 12 0040_01     0040        1
## 13 0040_02     0040        1
## 14 0042_01     0042        0
## 15 0046_01     0046        1
## 16 0046_02     0046        1
## 17 0046_03     0046        1
## 18 0047_01     0047        1
## 19 0047_02     0047        1
## 20 0047_03     0047        1

Test veri çerçevesinden sadece PassengerId, ailenum ve aile sütunlarını alıp ilk 20 satırını gösterir

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

Aile sütunu, aile numarasının tekrar edip etmediğini belirlemek için kullanılır. Eğer tekrar ediyorsa 1, aksi halde 0 atanır.

train <- train %>% select(- c(ailenum,ailesıra ))

train veri çerçevesindeki belirli sütunları çıkartarak veriyi güncelliyor. Daha spesifik olarak, ailenum ve ailesıra sütunları çıkartılıyor.

test <- test %>% select(- c(ailenum,ailesıra ))

test veri çerçevesindeki belirli sütunları çıkartarak veriyi güncelliyor. Daha spesifik olarak, ailenum ve ailesıra sütunları çıkartılıyor.

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

Train veri çerçevesindeki Cabin sütunundaki değerleri “/”, karakterine göre üç parçaya böler ve elde edilen parçaları deck, num ve side adlı üç yeni sütuna atar. Örneğin, Cabin sütunundaki bir değer “A/B/C” ise, bu kod ile deck sütunu “A” değerini, num sütunu “B” değerini ve side sütunu ise “C” değerini alır.

train <- train %>% select(- c(Cabin,num,Name))

Train veri çerçevesindeki Cabin sütunundaki değerleri “/”, karakterine göre üç parçaya böler ve elde edilen parçaları deck, num ve side adlı üç yeni sütuna atar. Örneğin, Cabin sütunundaki bir değer “A/B/C” ise, bu kod ile deck sütunu “A” değerini, num sütunu “B” değerini ve side sütunu ise “C” değerini alır.

test <- test %>% select(- c(Cabin,num,Name))

Metin, test veri çerçevesinden belirli sütunları kaldırarak verilerin nasıl güncelleneceğini açıklamaktadır. Özellikle, Cabin, num ve Name sütunları R’deki dplyr paketindeki select işlevi kullanılarak kaldırılır. Belirtilen sütunları kaldırmak için -c(Cabin, num, Name) ifadesi kullanılır.

train$deck <- addNA(train$deck)

Metin basitçe “train” veri çerçevesinin “deck” sütunundaki eksik değerlere (NA) “NA” değerini eklediğini söylemektedir.

test$deck <- addNA(test$deck)

Metin basitçe “test” veri çerçevesinin “deck” sütunundaki eksik değerlere (NA) “NA” değerini eklediğini söylemektedir.

train$side <- addNA(train$side)

Metin basitçe train “yan” sütunundaki eksik değerlerin (NA) “NA” ile değiştirildiğini gösterir. Bunu yapmak için addNA fonksiyonu kullanılır.

test$side <- addNA(test$side)

Metin basitçe test “yan” sütunundaki eksik değerlerin (NA) “NA” ile değiştirildiğini gösterir. Bunu yapmak için addNA fonksiyonu kullanılır.

hist(train$Age)

Bir histogram oluşturularak train veri çerçevesindeki Age sütunundaki değerlerin dağılımı gösterilir.

hist(test$Age)

Bir histogram oluşturularak test veri çerçevesindeki Age sütunundaki değerlerin dağılımı gösterilir.

hist(train$RoomService)

Orijinal metinde, train verilerinin RoomService sütunundaki değerlerin dağılımını gösteren bir histogram oluşturulması gerektiği belirtiliyor. Histogram, değişkenin değerlerinin frekansını gruplara böler ve her grup için bir çubuk gösterir.

hist(test$RoomService)

Orijinal metinde, test verilerinin RoomService sütunundaki değerlerin dağılımını gösteren bir histogram oluşturulması gerektiği belirtiliyor. Histogram, değişkenin değerlerinin frekansını gruplara böler ve her grup için bir çubuk gösterir.

hist(train$FoodCourt)

Train veri çerçevesindeki FoodCourt sütunundaki değerlerin frekans dağılımını gösteren bir histogram çizer. Bu tür grafikler, değişkenin genel dağılımını anlamak ve aykırı değerleri görsel olarak belirlemek için kullanılır.

hist(test$FoodCourt)

Test veri çerçevesindeki FoodCourt sütunundaki değerlerin frekans dağılımını gösteren bir histogram çizer. Bu tür grafikler, değişkenin genel dağılımını anlamak ve aykırı değerleri görsel olarak belirlemek için kullanılır.

hist(train$ShoppingMall)

Train veri çerçevesindeki ShoppingMall sütununun değerlerinin frekans dağılımını gösteren bir histogram oluşturulur.

hist(test$ShoppingMall)

Test veri çerçevesindeki ShoppingMall sütununun değerlerinin frekans dağılımını gösteren bir histogram oluşturulur.

hist(train$Spa)

Train shortened: “[…] bir histogram oluşturur. Histogram, bir değişkenin değerlerinin frekansını gruplara böler ve her grup için bir çubuk gösterir.”

hist(test$Spa)

Test shortened: “[…] bir histogram oluşturur. Histogram, bir değişkenin değerlerinin frekansını gruplara böler ve her grup için bir çubuk gösterir.”

hist(train$VRDeck)

Train veri çerçevesindeki VRDeck sütununun frekans dağılımını gösteren bir histogram oluşturur. Histogram, değişkenin değerlerini gruplara böler ve her grup için bir çubuk gösterir.

hist(test$VRDeck)

Test veri çerçevesindeki VRDeck sütununun frekans dağılımını gösteren bir histogram oluşturur. Histogram, değişkenin değerlerini gruplara böler ve her grup için bir çubuk gösterir.

hist(train$aile)

Train veri çerçevesindeki aile sütunundaki değerlerin frekans dağılımını gösteren bir histogram çizilir. Bu grafik, değişkenin dağılımını anlamak, merkezi eğilimini incelemek ve aykırı değerleri görsel olarak belirlemek için kullanılır.

hist(test$aile)

Test veri çerçevesindeki aile sütunundaki değerlerin frekans dağılımını gösteren bir histogram çizilir. Bu grafik, değişkenin dağılımını anlamak, merkezi eğilimini incelemek ve aykırı değerleri görsel olarak belirlemek için kullanılır.

Logistic Regresyon

Logistik regresyon, bağımlı bir değişkenin olasılıklarını tahmin etmek için kullanılan istatistiksel bir modelleme tekniğidir. Bağımlı değişkenin 1 olma olasılığı, bağımsız değişkenlerin lineer kombinasyonu üzerinden bir sigmoid fonksiyonuyla hesaplanır. Bu yöntem genellikle ikili sınıflandırma problemlerinde kullanılır.

train_set <- train[2:15]

Train_seti, yalnızca orijinal trene ait 2. ve 15. sütunları içeren yeni bir veri çerçevesidir.

test_set <- test[2:14]

Test_seti, yalnızca orijinal trene ait 2. ve 15. sütunları içeren yeni bir veri çerçevesidir.

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)

caTools paketini kullanarak veri setini eğitim ve test setlerine ayırırız. sample.split fonksiyonu ile veriyi belirli bir orana göre böleriz (%75 eğitim, %25 test). subset fonksiyonunu kullanarak uygun verileri seçeriz. Böylece training_set ve testing_set adlı iki ayrı veri seti oluşturulmuş olur. Bu ayrım, genellikle modelin eğitildiği veri üzerinde performansını değerlendirmek için kullanılır.

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

Ranger paketini kullanarak lojistik regresyon modeli eğitmek için glm fonksiyonu kullanılır. Model, bağımlı değişkenin diğer bağımsız değişkenlere göre sınıflandırılmasını öğrenir. Bu model eğitim veri seti üzerinde eğitilir ve test veri seti üzerinde değerlendirilebilir.

prob_pred = predict(logistic, type = 'response', newdata = testing_set[-13])

‘newdata = testing_set[-13]’ argümanı, test setinden 13. sütun (bağımlı değişken) hariç tutularak tahminlerin yapılacağı yeni veri setini belirtir.

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

Tipik olarak lojistik regresyon modellerinde, belirlenen bir eşik değeri (0.5) üzerindeki olasılık tahminlerine göre ikili bir sınıflandırma yapılır. Eğer olasılık tahmini 0.5’ten büyükse, y_pred değeri 1 olarak ayarlanır. Eğer olasılık tahmini 0.5’ten küçükse, y_pred değeri 0 olarak ayarlanır. Bu yöntem, sınıflandırma problemlerinde sıklıkla kullanılır çünkü lojistik regresyon modelleri genellikle 0 ile 1 arasında bir olasılık sağlar.

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

Y_true vektörü, test setindeki gerçek sınıfları temsil eden değerlerden oluşan bir vektördür. Bu vektör, modele performansın değerlendirilmesi amacıyla kullanılabilir.

cm = table(y_true, y_pred)

table(y_true, y_pred): y_true ve y_pred vektörlerini kullanarak bir karmaşıklık matrisi oluşturur. Bu matris, gerçek ve tahmin edilen sınıfların kesişimlerini içerir. Karmaşıklık matrisi genellikle şu dört değeri içerir:

True Positive (TP): Gerçek sınıf 1, Tahmin sınıf 1. True Negative (TN): Gerçek sınıf 0, Tahmin sınıf 0. False Positive (FP): Gerçek sınıf 0, Tahmin sınıf 1. False Negative (FN): Gerçek sınıf 1, Tahmin sınıf 0. Bu değerler, sınıflandırma modelinin performansını daha ayrıntılı bir şekilde anlamamıza yardımcı olur. Özellikle, hassasiyet (precision), duyarlılık (recall) ve F1 skoru gibi performans metriklerini hesaplamak için kullanılabilir.

cm
##       y_pred
## y_true    0    1
##      0  982 1154
##      1   28    9

Karmaşıklık matrisi, sınıflandırma modelinin performansını değerlendirmek için kullanılan bir matristir. Gerçek ve tahmin edilen sınıfları içerir. Metin, matriste bulunan terimlerin ve performans metriklerinin kısaca açıklanmasını içerir.

(982+9)/(982+9+1154+28)
## [1] 0.4560515

Bu ifade bir sınıflandırma modelinin hassasiyet değerini hesaplamak için kullanılan bir formülü ifade eder. Hassasiyet, modelin doğru olarak pozitif tahmin ettiği örneklerin gerçekte pozitif olma oranını ifade eder

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

Bu işlemde, bağımlı değişken ile bağımsız değişkenler arasındaki ilişkiyi göstermek için formül kullanılır. Formülde “.” ifadesi, diğer bağımsız değişkenleri temsil eder. Ayrıca, modelin bağımlı değişkenin iki sınıfa ait olduğunu ifade eden binominal lojistik regresyon modelini kullanacağı belirtilir. Modelin eğitim veri seti üzerinde eğitileceği de belirtilir.

prob_pred = predict(logistic_son, type = 'response', newdata = test_set)
y_pred = ifelse(prob_pred > 0.5, TRUE, FALSE)

Bu işlem, eğitilen lojistik regresyon modelinden test setindeki verilere ait olasılık tahminlerini hesaplar ve 0.5 üzerinde olan tahminleri TRUE olarak, diğerlerini ise FALSE olarak sınıflandırır.

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

Test setindeki her örneğin lojistik regresyon modeli tarafından yapılan ikili sınıflandırmaya göre tahmin edilenTahmin sınıfl edilen sarı kullanarakınıflara Transported de dayanarakğişken Transported deini oluğişkenştururi oluuz. Aşturulynı zamanda buur tah ve bununminl yanereı ait olan sıra bu tahmin PassengerId’lereleri a de test veriti set olan PassengerindenId alır’ler de alınır.ız. Böylece Transported değişkeni, modelin test setindeki her gözlem için yaptığı tahminleri içerirken, PassengerId değişkeni bu tahminlere ait yolcu kimlik numaralarını içerir.

Transported <- as.vector(Transported)

Transported değişkeni vektör türüne dönüştürülerek tek boyutlu bir vektöre çevrilebilir. Bu dönüşüm genellikle veri manipülasyonu veya analizi için kullanılır.

submission <- cbind(PassengerId, Transported)

PassengerId ve Transported değişkenlerinin birleştirilerek bir veri çerçevesi veya matris oluşturulur. Oluşturulan yapının adı submission’dır ve PassengerId ve Transported değişkenlerini içerir. submission genellikle veri setlerini düzenlemek veya model tahminlerini içeren dosyalar hazırlamak için kullanılır.

submission <- as.data.frame(submission)

submissionadlı değişken veri çerçevesine dönüştürülür.submissiondeğişkeniPassengerIdveTransportedsütunlarını içeren bir veri çerçevesine çevrilir. Bu işlemlesubmission` değişkeni veri çerçevesi olarak saklanır ve veri analizi ve görselleştirmesi gibi işlemlerde kullanılabilir.

library(stringr)

Stringr paketini R ortamına yüklemek ve kullanıma hazırlamak için “library(stringr)” kodu kullanılır. Stringr karakter dizileri üzerinde kolaylıkla işlemler yapmayı sağlayan bir pakettir ve özellikle metin madenciliği, veri temizleme ve düzenleme gibi işlemlerde sıkça kullanılır

submission$Transported <- str_to_title(submission$Transported)

stringr paketi, R ortamına yüklenir. Bu paket, karakter dizileri üzerinde işlemler yapmayı kolaylaştırır ve metin madenciliği, veri temizleme ve düzenleme gibi işlemlerde sıkça kullanılır. Paketin fonksiyonları ve yetenekleri, metin içinde desen arama, parça alma, büyük/küçük harf dönüşümü gibi işlemleri gerçekleştirmek için kullanılabilir.

write.csv(submission, "sub_logistic.csv", row.names = FALSE, quote = FALSE)
  1. “write.csv(submission,”sub_logistic.csv”)” kodu kullanılarak bir veri çerçevesinin “sub_logistic.csv” isimli bir CSV dosyasına yazılması sağlanır. Bu işlem sırasında, satır numaraları kaydedilmeyip karakter dizileri tırnak işaretleri içine alınmaz. Bu dosya genellikle modelin sınıflandırma tahminlerini başka platformlar veya uygulamalarla paylaşmak amacıyla kullanılır.

Naive Bayes

Naive Bayes, istatistik ve olasılık temel alarak sınıflandırma yapmak için kullanılan bir makine öğrenimi algoritmasıdır. Bu algoritma, Bayes Teoremi’ni kullanarak bir örneğin bir sınıfa ait olma olasılığını tahmin etmeye çalışır. Naive Bayes genellikle metin sınıflandırma ve spam filtreleme gibi dil işleme problemlerinde başarılıdır. Algoritmanın adı olan “Naive” (Saf) ifadesi, bağımsızlık varsayımını ifade eder. Naive Bayes, özelliklerin bağımsız olduğunu varsayar ve sınıflandırma için bu varsayıma dayanarak çalışır. Model oluşturulduktan sonra, yeni örneklerin sınıflandırılması için bu model kullanılır. Naive Bayes’in avantajları arasında basit ve hızlı olması, küçük veri setlerinde iyi performans göstermesi ve metin verileri gibi problemlerde etkili olması yer alır. Ancak, bağımsızlık varsayımının gerçek dünya verilerine her zaman uymaması zayıf bir yanıdır.

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

e1071 paketini kullanarak Naive Bayes sınıflandırma modeli eğitilir ve test veri setindeki örnekler sınıflandırılır. Sonuçlar bir veri çerçevesine dönüştürülür.

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

Naive Bayes modeline göre yapılan tahminlerle, bir ikili sınıflandırma yapılır. Tahminlerdeki olasılıkların 0.5 eşik değerinden büyük olup olmadığı kontrol edilir. 0.5’ten büyükse 1 olarak etiketlenir, değilse 0 olarak etiketlenir. Böylece, y_pred vektörü, test setindeki her bir gözlem için yapılan ikili sınıflandırma tahminlerini içerir ve pozitif ve negatif sınıfları temsil eden 0 ve 1 değerlerini alır.

cm = table(y_true, y_pred)

Bu fonksiyon, gerçek sınıflar ile tahmin edilen sınıflar arasındaki karşılaştırmayı yaparak bir karmaşıklık matrisi oluşturur. Karmaşıklık matrisi, sınıflandırma modelinin performansını değerlendirmek için kullanılır ve genellikle dört hücreden oluşur: True Positive (TP), True Negative (TN), False Positive (FP) ve False Negative (FN).

cm
##       y_pred
## y_true    0    1
##      0  566 1570
##      1   22   15
(566+15)/(566+15+1570+22)
## [1] 0.2673723
nb_son = naiveBayes(Transported ~ ., data = train_set)

Naive Bayes sınıflandırma modelini eğitmek için naiveBayes fonksiyonu kullanılır. Bu fonksiyon, tüm bağımsız değişkenleri içeren bir Naive Bayes modeli oluşturur ve eğitim veri seti üzerinde eğitilir.

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

Bu R kodu, eğitilmiş bir Naive Bayes modeli kullanarak yeni veri seti üzerinde sınıflandırma tahminleri yapar. Tahmin sonuçlarının olasılık değerlerini elde etmek için “type = ‘raw’” ifadesi kullanılır. Bu tahminleri içeren sonuç, %>% operatörü ile bir veri çerçevesine dönüştürülür.

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

Naive Bayes modelinin sınıflandırma olasılıklarını kullanarak ikili bir sınıflandırma yapar. İlgili olasılıkları seçer ve 0.5 eşik değerini kullanarak pozitif ve negatif sınıfları belirler. Sonuç olarak, y_pred vektörü pozitif ve negatif sınıfları temsil eden ikili sınıflandırma tahminlerini içerir.

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

y_pred vektörünü karakter dizisine dönüştürüp PassengerId ile eşleştirerek bir tahmin sonucu dosyası oluşturulur.

Transported <- as.vector(Transported)

Kodda, “as.vector()” fonksiyonunu kullanarak “Transported” adlı vektörün tipi değiştiriliyor.

submission <- cbind(PassengerId, Transported)
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 2)

PassengerId ve Transported vektörlerini birleştirerek tahmin sonucu dosyası oluşturulur.

submission <- as.data.frame(submission)

submission adlı veri çerçevesi as.data.frame() ile dönüştürülerek başka bir veri çerçevesine dönüştürülür.

submission$Transported <- str_to_title(submission$Transported)

Transported sütunundaki karakter dizilerinin baş harfini büyük harfe çeviren bir submission veri çerçevesi.

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

Yazılım, veri çerçevesini CSV dosyasına yazmaktadır.

SVM

SVM, sınıflandırma ve regresyon problemleri için kullanılan bir makine öğrenimi algoritmasıdır. Ana amacı, sınıfları ayıran bir hiper düzlemi bulmaktır. Bu düzlemi belirleyen noktalara “destek vektör” denir. SVM, sınıflar arasındaki marjı (mesafe) maksimize eden en iyi hiper düzlemi bulmaya yardımcı olur. Ayrıca, non-lineer sınıflandırma problemlerini çözebilmek için kernel fonksiyonlarını kullanır. SVM, genelleme yeteneğini artırmak amacıyla sınıflar arasındaki marjı maksimize eder.

library(e1071)
fit_svm <- svm(Transported ~ ., data = training_set, type = 'C-classification', kernel = 'linear')
preds <- predict(fit_svm, newdata = testing_set, type = "raw") %>% data.frame()

Kısaca, e1071 paketi kullanılarak bir destek vektör makinesi (SVM) modeli eğitilir ve bu model kullanılarak yeni veriye sınıflandırma tahminleri yapılır.

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

Naive Bayes modelinin sınıflandırma olasılıklarını kullanarak ikili bir sınıflandırma yapar. İlgili olasılıkları seçer ve 1 :0 eşik değerini kullanarak pozitif ve negatif sınıfları belirler

cm = table(y_true, y_pred)

table(y_true, y_pred) oluşturulan karmaşıklık matrisi, sınıflandırma modelinin performans ölçütlerini (doğruluk, hassasiyet, özgüllük) değerlendirmek için kullanılır.

cm
##       y_pred
## y_true    0    1
##      0  976 1160
##      1   28    9
(976+9)/(976+9+1160+28)
## [1] 0.4532904
svm_son <- svm(Transported ~ ., data = train_set, type = 'C-classification', kernel = 'linear')

Bu kod, SVM modelini eğitmek için kullanılır. Train_set üzerinde C-tipi bir sınıflandırma SVM modeli oluşturur. Lineer çekirdek kullanılır. Sonuç olarak, svm_son değişkeni, eğitilmiş SVM modelini temsil eder ve train_set üzerinde sınıflandırma yapabilir.

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

Bu ifade, SVM modelinin test seti üzerinde sınıflandırma tahminleri yapmak için kullanıldığını belirtir. Tahmin sonuçlarının olasılık değerleri olarak elde edilmesini sağlar. Bu ifade predict fonksiyonunun çıktısını bir veri çerçevesine dönüştürür.

y_pred = preds$.

Tahmin_Sütun_Adi, tahminlerin sütun adını temsil eder. Bu adı uygun bir şekilde değiştirmelisiniz. y_pred, tahminlerin sınıf etiketlerini içeren bir vektördür.

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

Transported” değişkeni tahminleri karakter dizisi olarak içerir ve “PassengerId” değişkeni test veri setindeki yolcu kimliklerini içerir. Bu iki vektör birleştirilerek tahmin sonuçlarını içeren bir veri çerçevesi oluşturulabilir.

Transported <- as.vector(Transported)

Transported) dönüştürme işlemi genellikle gereksizdir çünkü as.character(y_pred) zaten bir karakter dizisi vektörü döndürür. Ancak, vektör tipini kullanma ihtiyacı veya uyumsuzluk durumu söz konusuysa, bu dönüşüm yapılabilir.

submission <- cbind(PassengerId, Transported)

cbind fonksiyonu, PassengerId ve Transported adlı iki vektörü sütunlarını yanyana ekleyerek bir veri çerçevesi oluşturur.

submission <- as.data.frame(submission)

(submission) dönüşümü, submission adlı nesnenin tipini veri çerçevesine çevirir. Eğer submission zaten bir veri çerçevesi ise veya bu dönüşüm gereksiz ise bu adım atlanabilir. Bazen cbind veya diğer işlemler sonucunda oluşan nesneler başlangıçta veri çerçevesi türünde değildir, bu yüzden tipini doğrulamak veya uyumlu hale getirmek için bu dönüşüm kullanılır.

submission$Transported <- str_to_title(submission$Transported)

Bu ifade, submission veri çerçevesindeki Transported sütunundaki metin değerlerini baş harflerini büyük yapmak için str_to_title fonksiyonunu kullanır. Bu, submission$Transported sütununu, str_to_title fonksiyonunun çıktısıyla günceller, böylece metin değerleri baş harfleri büyük olacak şekilde değişir.

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

submission veri çerçevesini “sub_svm.csv” adlı bir CSV dosyasına kaydetmek için write.csv fonksiyonunu kullanır. Dosyada satır numaraları bulunmaz ve metin değerlerine çift tırnak eklenmez. Bu dosya genellikle sınıflandırma tahmin sonuçlarını içerir ve değerlendirme amacıyla kullanılabilir.