VİZE PROJESİ

1910701526

SPACESHİP TITANİC KAGGLE COMPETTION

Kaggle, ünlü Titanic yarışmasına benzer şekilde Spaceship Titanic adında eğlenceli bir yarışma başlattı. Bu yarışma, veri bilimine yeni başlayanlar için makine öğrenimi hakkında bilgi edinmenin, Kaggle’ı keşfetmenin ve topluluğun diğer üyeleriyle tanışmanın bir yoludur. Bu makale Spaceship Titanic yarışmasını analiz etmekte ve RandomForestClassifier kullanarak test seti için anlamlı içgörülerin nasıl elde edileceğini ve “temel gerçeğin” yaklaşık %80 doğrulukla nasıl tahmin edileceğini açıklamaktadır.

PROBLEME TANIMI

Uzay gemisi Titanik, bir uzay-zaman anomalisiyle çarpıştı ve yolcuların yarısı farklı bir boyuta taşındı. Kayıp yolcuları bulmak için hasarlı bilgisayar sisteminden kayıtları geri yüklememiz gerekiyor.

VERİLER HAKKINDA

*Train dosyası (spaceship_titanic_train.csv) — Kişisel kayıtlar,makine öğrenimi modeli oluşturmak için kullanılacak yolcuların bilgilerini içerir.

*Test dosyası (spaceship_titanic_test.csv) — Metin, yolcuların üçtebirinin kişisel kayıtlarını içerdiğini, ancak taşınabilir değeri içermediğini belirtmektedir.

Bu verilerin, modelin görünmeyen veriler üzerinde ne kadar iyi performans gösterdiğini ölçmek için kullanılacağı söylenmektedir.

Bu problem çözmek için Rstudio ve RMarkdown kullanacağız.

VERİ OKUMA

Veri setinin yapısını kontrol edeceğiz.Önce özelliklere bakacağız, sonra türleri kontrol edeceğiz.

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

Train veri setinde 13 bağımsız değişken ve 1 hedef değişken bulunuyor(Transported). Aynı şekilde test veri setinde de sütunlar mevcut. Test veri kümesinde, train veri kümesiyle benzer özelliklere sahip olduğumuz için tahminlerimizi train verileriyle oluşturulan modele dayanarak yapacağız.

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>

Yukarıdaki değişkenleri açıklamasına vereceğiz.

*PassengerId:Her yolcu için benzersiz bir kimlik olan gggg_pp formatındaki kimlikler,gggg’nin yolcunun seyahat ettiği grubu ve pp’nin grup içindeki numarasını gösterir. Bu grup genellikle aile üyelerinden oluşur, fakat her zaman olmayabilir.

*HomePlanet:Yolcunun ayrıldığı gezegen daimi ikamet gezegeni olarak bilinir.

*CryoSleep:Yolcunun yolculuk süresinde dondurucu uykuya alınıp alınmayacağını gösterir. Yolcular cabinlere kapatılır.

*Cabin :Yolcunun kaldığı cabin numarası.deck/num/side biçimini alır, burada yan İskele için P veya Sancak için S olabilir.

*Destination:Yolcunun ineceği gezegen.

*Age:Yolcunun yaşı.

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

*Roomservice,Foodcourt,ShoppingMall,Spa,VRDeck:Yolcunun Uzay Gemisi Titanic’in faturalandırılan her bir lüks özelliği için tutar ödediği belirtiliyor.

*Name:Yolcunun adı ve soyadı.

*Transported:Gözlemlediğimiz şey, yolcunun başka bir boyuta geçip geçmediğini belirlemeye çalışmak. Bunun hedefi sütundur.

unique(train$HomePlanet)
## [1] "Europa" "Earth"  "Mars"   NA
unique(test$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   NA
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

TİDYVERSE

Tidyverse, veri analizi ve görselleştirme için kullanılan bir paket serisidir. Temiz, düzenli ve etkili bir veri analizi süreci sağlar.

library(tidyverse)
library(explore)

Train ve test veri çerçevesinde boş değerleri kontrol eder ve boş olan hücrelere NA değeri atanır.

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    lgl     217    2.5      3     0   0.36     1
##  4 Cabin        chr     199    2.3   6561    NA  NA       NA
##  5 Destination  chr     182    2.1      4    NA  NA       NA
##  6 Age          dbl     179    2.1     81     0  28.8     79
##  7 VIP          lgl     203    2.3      3     0   0.02     1
##  8 RoomService  dbl     181    2.1   1274     0 225.   14327
##  9 FoodCourt    dbl     183    2.1   1508     0 458.   29813
## 10 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 11 Spa          dbl     183    2.1   1328     0 311.   22408
## 12 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 13 Name         chr     200    2.3   8474    NA  NA       NA
## 14 Transported  lgl       0    0        2     0   0.5      1
test %>% describe_all()
## # A tibble: 13 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     4277    NA  NA       NA
##  2 HomePlanet   chr      87    2        4    NA  NA       NA
##  3 CryoSleep    lgl      93    2.2      3     0   0.37     1
##  4 Cabin        chr     100    2.3   3266    NA  NA       NA
##  5 Destination  chr      92    2.2      4    NA  NA       NA
##  6 Age          dbl      91    2.1     80     0  28.7     79
##  7 VIP          lgl      93    2.2      3     0   0.02     1
##  8 RoomService  dbl      82    1.9    843     0 219.   11567
##  9 FoodCourt    dbl     106    2.5    903     0 439.   25273
## 10 ShoppingMall dbl      98    2.3    716     0 177.    8292
## 11 Spa          dbl     101    2.4    834     0 303.   19844
## 12 VRDeck       dbl      80    1.9    797     0 311.   22272
## 13 Name         chr      94    2.2   4177    NA  NA       NA

“Train ve test” veri çerçevesindeki “Cabin” sütununu karakterine göre bölerek, “sütun1”, “sütun2” ve “sütun3” adlı yeni sütunları oluşturur. Sonra İskele için P veya Sancak için S kolayca göstereceğiz.

train[c('sütun1', 'sütun2', 'sütun3')] <-str_split_fixed(train$Cabin,'/', 3)
test[c('sütun1', 'sütun2', 'sütun3')] <-str_split_fixed(test$Cabin,'/', 3)

Train ve test bulunan PassengerId sütununu içinde iki tane bilgi (gggg_pp) vardı ve bu iki bilgi çıkartacağız,(gggg)ailenum ve (pp)ailesıra.

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

Train ve test, PassengerId sütunundaki ayırılan hücreyi başıya alalım.

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

Şimdi train ve test, Cabinden üç parçaya ayırılan hücreyi (‘sütun1’, ‘sütun2’, ‘sütun3’) Cabinin yanına alalım.

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

Train ve test veri kümesinin Cabinin bilgisine aldık,artık ihtiyacımız kadığı için temizliğeceğiz.

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

AddNA() fonksiyonu, belirtilen vektöre veya faktöre NA değerini eklemek için kullanılır.Örneğin, eğer “train ve test” veri sütunun başlangıçta NA değerleri içermiyorsa, bu kod parçası her hücreye bir NA değeri ekleyecektir. Eğer “train ve test” veri sütunun zaten NA değerleri içeriyorsa, bu kod değişikliğe neden olmayacaktır.

train$HomePlanet <- addNA(train$HomePlanet)
test$HomePlanet <- addNA(test$HomePlanet)
train$CryoSleep <- addNA(train$CryoSleep)
test$CryoSleep <- addNA(test$CryoSleep)
train$sütun1 <-addNA(train$sütun1)
test$sütun1 <-addNA(test$sütun1)
train$Destination <- addNA(train$Destination)
test$Destination <- addNA(test$Destination)
train$VIP <- addNA(train$VIP)
test$VIP <- addNA(test$VIP)

Şimdi “train” ve “test” veri çerçevelerinin “HomePlanet” ve “Destination” sütunlarına göre gruplanmasını sağlar. Daha sonra, eksik değerleri (NA) “Age” sütununda ortalama değerlerle değiştiririz.

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

Train ve test, isim(Name) sütunun ihtiyacımız yok o yüzden sileceğiz.

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

Şimdi Bu dönüşüm işlemi, sütunlardaki eksik veya boş değerleri belirli bir değerle (burada 0 ile) doldurmayı amaçlacımızdır. Bu, veri analizi veya modelleme sürecinde eksik değerlerin doğru şekilde ele alınması ve sorun yaşanmaması için önemlidir.

train <- train %>% 
  mutate(RoomService=coalesce(RoomService, 0),
         FoodCourt=coalesce(FoodCourt, 0),
         ShoppingMall=coalesce(ShoppingMall, 0),
         Spa=coalesce(Spa,0),
         VRDeck=coalesce(VRDeck,0))
test <- test %>% 
  mutate(RoomService=coalesce(RoomService, 0),
         FoodCourt=coalesce(FoodCourt, 0),
         ShoppingMall=coalesce(ShoppingMall, 0),
         Spa=coalesce(Spa,0),
         VRDeck=coalesce(VRDeck,0))
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 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 sütun1       fct       0      0      9    NA  NA      NA
##  7 sütun2       chr       0      0   1818    NA  NA      NA
##  8 sütun3       chr       0      0      3    NA  NA      NA
##  9 Destination  fct       0      0      4    NA  NA      NA
## 10 Age          dbl       0      0     91     0  28.8    79
## 11 VIP          fct       0      0      3    NA  NA      NA
## 12 RoomService  dbl       0      0   1273     0 220.  14327
## 13 FoodCourt    dbl       0      0   1507     0 448.  29813
## 14 ShoppingMall dbl       0      0   1115     0 170.  23492
## 15 Spa          dbl       0      0   1327     0 305.  22408
## 16 VRDeck       dbl       0      0   1306     0 298.  24133
## 17 Transported  lgl       0      0      2     0   0.5     1
test %>% describe_all()
## # A tibble: 16 × 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 sütun1       fct       0      0      9    NA  NA      NA
##  7 sütun2       chr       0      0   1506    NA  NA      NA
##  8 sütun3       chr       0      0      3    NA  NA      NA
##  9 Destination  fct       0      0      4    NA  NA      NA
## 10 Age          dbl       0      0     91     0  28.7    79
## 11 VIP          fct       0      0      3    NA  NA      NA
## 12 RoomService  dbl       0      0    842     0 215.  11567
## 13 FoodCourt    dbl       0      0    902     0 429.  25273
## 14 ShoppingMall dbl       0      0    715     0 173.   8292
## 15 Spa          dbl       0      0    833     0 296.  19844
## 16 VRDeck       dbl       0      0    796     0 305.  22272

Artık train ve test setinin describe_all içinde na kısmın değişkenler sıfırdır.

“Train ve test” veri çerçevesine “aile” adlı bir sütun eklenir. Bu sütun, “ailenum” sütunundaki yinelenen değerlerin varlığını gösteren bir etiket alır, 1 yinelenen değerler için ve 0 yinelenmeyen değerler için işaretlenir.

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

Artık bunlar (ailenum,ailesıra ve sütun2 ) ihtiyacımız yok onlara sileceğiz.

train <- train %>% select(- c(ailenum,ailesıra ,sütun2 ))
test <- test %>% select(- c(ailenum,ailesıra ,sütun2 ))

Train ve test veri setimizin yapısına bakalım.

cat("Eğitilmiş veri kümesinin şekli şöyledir: ", nrow(train), " satırlar ve ", ncol(train), " columns\n")
## Eğitilmiş veri kümesinin şekli şöyledir:  8693  satırlar ve  15  columns
cat("Eğitilmiş veri kümesinin şekli şöyledir: ", nrow(test), " satırlar ve ", ncol(test), " columns\n")
## Eğitilmiş veri kümesinin şekli şöyledir:  4277  satırlar ve  14  columns

Train veri kümesinde 8693 satır ve 15 sütun ve test veri kümesinde 4277 satır ve 14 sütun var.

Keşifsel Veri Analizi

Tek Değişkenli Analiz

Tek değişkenli analiz, verileri ayrı ayrı inceleyerek değerlerinin dağılımını anlamak için kullanılan en basit veri analiz yöntemidir.

Hedef Değişken

Öncelikle Transported adlı hedef değişkene odaklanacağız. Bu bir kategorik değişkendir, bu yüzden yüzde dağılımına ve çubuk grafiğine bakacağız.

table(train$Transported) / length(train$Transported)
## 
##     FALSE      TRUE 
## 0.4963764 0.5036236
library(ggplot2)
ggplot(train, aes(x = Transported, fill = factor(Transported))) +
  geom_bar() +
  labs(x = "Transported", y = "Transported Count") +
  scale_fill_manual(values = c("0" = "white", "1" = "blue"))

Train veri setindeki 8693 yolcudan 4378’i (yaklaşık% 50) başka bir boyuta taşındı.

Şimdi Bağımsız kategorik özelliklerini görselleştirelim.

Bağımsız Değişken train için (Kategorik)

ggplot(train, aes(x = HomePlanet, fill = factor(HomePlanet))) +
  geom_bar() +
  labs(title = "HomePlanet", y = "Frequency")

Train setindeki yolcuların yaklaşık %50’si Dünya’dan ayrıldı.

ggplot(train, aes(x = CryoSleep, fill = factor(CryoSleep))) +
  geom_bar() +
  labs(title = "CryoSleep", y = "Frequency")

Train veri setindeki yolcuların yaklaşık% 30’u CryoSleep’teydi.

ggplot(train, aes(x = Destination, fill = factor(Destination))) +
  geom_bar() +
  labs(title = "Destination", y = "Frequency")

Train veri set indeki yolcuların yaklaşık% 69’u TRAPPIST-1e’ye gidiyordu.

veri setindeki yolcuların en fazla %1’i VIP hizmetleri için ödeme yapmadı

Bağımsız Değişken test için (Kategorik)

ggplot(test, aes(x = HomePlanet, fill = factor(HomePlanet))) +
  geom_bar() +
  labs(title = "HomePlanet", y = "Frequency")

Test setindeki yolcuların yaklaşık % 25’si Dünya’dan ayrıldı.

ggplot(test, aes(x = CryoSleep, fill = factor(CryoSleep))) +
  geom_bar() +
  labs(title = "CryoSleep", y = "Frequency")

Test veri setindeki yolcuların yaklaşık% 15’u CryoSleep’teydi.

ggplot(train, aes(x = Destination, fill = factor(Destination))) +
  geom_bar() +
  labs(title = "Destination", y = "Frequency")

Test veri set indeki yolcuların yaklaşık %29’u TRAPPIST-1e’ye gidiyordu.

ggplot(test, aes(x = VIP, fill = factor(VIP))) +
  geom_bar() +
  labs(title = "VIP", y = "Frequency")

Traindeki gibi yolcuların en fazla %1’i VIP hizmetleri için ödeme yapmadı.

Sütunu ‘sütun1’,‘sütun2’,‘sütun3’ şeklini alır. Öyleyse, ‘sütun1’ ve ‘sütun2’ özelliklerini hem train hemde testteki çıkaralım ve görselleştirelim.

ggplot(train, aes(x = sütun1, fill = factor(sütun1))) +
  geom_bar() +
  labs(title = "sütun1", y = "Frequency")

ggplot(train, aes(x = sütun3, fill = factor(sütun3))) +
  geom_bar() +
  labs(title = "sütun3", y = "Frequency")

ggplot(test, aes(x = sütun1, fill = factor(sütun1))) +
  geom_bar() +
  labs(title = "sütun1", y = "Frequency")

ggplot(test, aes(x = sütun3, fill = factor(sütun3))) +
  geom_bar() +
  labs(title = "sütun3", y = "Frequency")

Yukarıdaki grafikten şu sonucu çıkarabiliriz:

Train ve test setindeki yolcuların yaklaşık% 60’ı F ve G güvertesindeydi. Hem train hemde test içindeki CabinSide tarafı S’de bulunan yolcuların yüzdesi ile P arasında pek bir fark yoktur.

Kategorik değişkenleri gördük. Şimdi sayısal değişkenleri görselleştirelim.

AGE

ggplot(train, aes(x = Age)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(test, aes(x = Age)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Train ve test, yaş değişkeninde aykırı değerler vardır ve dağılım oldukça normaldir.

RoomService

ggplot(train, aes(x = RoomService)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(test, aes(x = RoomService)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

RoomService’deki verilerin çoğunluğu sola doğru dağılmıştır ve aykırı değerleri fazladır.Bunları düzelteceğiz.

Spa

ggplot(train, aes(x = Spa)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(test, aes(x = Spa)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

RoomService’inkine benzer bir dağılım var. Çok fazla aykırı değer içerir ve normal olarak dağıtılmaz.

VRDeck

ggplot(train, aes(x = VRDeck)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(test, aes(x = VRDeck)) +
  geom_histogram(fill = "skyblue", color = "black")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

RoomService, FoodCourt, ShoppingMall, Spa, VRDeck, yolcunun Spaceship Titanic’in birçok lüks olanağının her birinde faturalandırdığı tutardır, bu yüzden VRDeck, FoodCourt ve ShoppingMall’un benzer bir dağılımı olup olmadığını görelim.

FoodCourt

hist(train$FoodCourt, main = "FoodCourt", col = "skyblue", xlab = "FoodCourt", ylab = "Frekans")
rug(jitter(train$FoodCourt), col = "darkblue")

hist(test$FoodCourt, main = "FoodCourt", col = "skyblue", xlab = "FoodCourt", ylab = "Frekans")
rug(jitter(test$FoodCourt), col = "darkblue")

ShoppingMall

ggplot(train, aes(x = ShoppingMall)) +
  geom_histogram( fill = "skyblue", color = "black") +
  labs(title = "ShoppingMall", x = "ShoppingMall", y = "Frekans")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(test, aes(x = ShoppingMall)) +
  geom_histogram( fill = "skyblue", color = "black") +
  labs(title = "ShoppingMall", x = "ShoppingMall", y = "Frekans")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

VRDeck, FoodCourt ve ShoppingMall’un benzer bir dağılıma sahip olduğunu görebiliriz. Hepsi normal olarak dağılmamıştır ve hepsinin aykırı değerleri vardır.

Formül yazma

\[ \pi= \frac{P_t-P_{t-1}}{P_{t-1}} \]

\[ Y=\beta_0 + \beta_1X + \epsilon \]

\[ Δ = b^2 - 4ac \]