spaceship titanıc

Hoş geldiniz 2912 yılına, burada veri bilimi becerilerinizle bir kozmik gizemi çözmeye ihtiyaç var. Dört ışık yılı uzaktan bir ileti aldık ve durum pek iç açıcı değil.

Uzay Gemisi Titanic, yaklaşık bir ay önce fırlatılan bir yıldızlar arası yolcu gemisiydi. 13.000’den fazla yolcusuyla, gemi ilk seyahatine başladı ve Güneş Sistemi’nden üç yeni yerleşilebilir ötegezegenin etrafında dolaşarak göçmenleri taşıdı.

Alpha Centauri’yi dolaşırken ilk varış noktası olan sıcak 55 Cancri E’ye giden yolunda, dikkatsizce Uzay Gemisi Titanic, bir toz bulutunun içinde gizlenmiş bir uzay-zaman anomaliyle çarpıştı. Ne yazık ki, gemi bütünlüğünü korudu ancak neredeyse yarıya yakını yolcular başka bir boyuta taşındı!

Şimdi, kayıp yolcuları geri getirmek ve gemiyi güvenli bir şekilde yönlendirmek için veri bilimi becerilerinize ihtiyaç var. Uzay Gemisi Titanic’in durumu hakkında gelen verilere bakalım ve bu kozmik gizemi çözmek için bir plan yapalım!

Veri Kümesi Açıklaması

Bu yarışmada göreviniz, Uzay Gemisi Titanik’in uzay-zaman anomalisiyle çarpışması sırasında bir yolcunun alternatif bir boyuta taşınıp taşınmadığını tahmin etmektir. Bu tahminleri yapmanıza yardımcı olmak için size geminin hasarlı bilgisayar sisteminden kurtarılan bir dizi kişisel kayıt veriliyor.

Dosya ve Veri Alanı Açıklamaları

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.

Downloda data

library(readr)
train <- read_csv("train.csv")
## Rows: 8693 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Cabin, Destination, Name
## dbl (6): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck
## lgl (3): CryoSleep, VIP, Transported
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
test <- read_csv("test.csv")
## Rows: 4277 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Cabin, Destination, Name
## dbl (6): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck
## lgl (2): CryoSleep, VIP
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
sample_submission <- read_csv("sample_submission.csv")
## Rows: 4277 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): PassengerId
## lgl (1): Transported
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── 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
library(explore)
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>
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

passenger sütünde “ailesıra ve aılenumara” olarak adlandıralım

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

cabin “deck num side” olarak adlandıralım

test[c("ailenum", "ailesira")] <- str_split_fixed(test$PassengerId, "_",2)
train[c('deck', 'num', 'side')] <- str_split_fixed(train$Cabin, '/', 3)
test[c('deck', 'num', 'side')] <- str_split_fixed(test$Cabin, '/', 3)

train ve test datlarındaki boilukları “NA” ile dolduralım

train[train == ''] <-NA
test[test == ''] <- NA
train %>% describe_all()
## # A tibble: 19 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA       NA
##  2 HomePlanet   chr     201    2.3      4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Cabin        chr     199    2.3   6561    NA  NA       NA
##  5 Destination  chr     182    2.1      4    NA  NA       NA
##  6 Age          dbl     179    2.1     81     0  28.8     79
##  7 VIP          lgl     203    2.3      3     0   0.02     1
##  8 RoomService  dbl     181    2.1   1274     0 225.   14327
##  9 FoodCourt    dbl     183    2.1   1508     0 458.   29813
## 10 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 11 Spa          dbl     183    2.1   1328     0 311.   22408
## 12 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 13 Name         chr     200    2.3   8474    NA  NA       NA
## 14 Transported  lgl       0    0        2     0   0.5      1
## 15 ailenum      chr       0    0     6217    NA  NA       NA
## 16 ailesira     chr       0    0        8    NA  NA       NA
## 17 deck         chr     199    2.3      9    NA  NA       NA
## 18 num          chr     199    2.3   1818    NA  NA       NA
## 19 side         chr     199    2.3      3    NA  NA       NA

Artık cabın ıhtıyacım kaladıgi için kaladırıyorum

train <- train %>% select(-Cabin)
test  <- test %>% select(-Cabin)
train %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA       NA
##  2 HomePlanet   chr     201    2.3      4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Destination  chr     182    2.1      4    NA  NA       NA
##  5 Age          dbl     179    2.1     81     0  28.8     79
##  6 VIP          lgl     203    2.3      3     0   0.02     1
##  7 RoomService  dbl     181    2.1   1274     0 225.   14327
##  8 FoodCourt    dbl     183    2.1   1508     0 458.   29813
##  9 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 10 Spa          dbl     183    2.1   1328     0 311.   22408
## 11 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 12 Name         chr     200    2.3   8474    NA  NA       NA
## 13 Transported  lgl       0    0        2     0   0.5      1
## 14 ailenum      chr       0    0     6217    NA  NA       NA
## 15 ailesira     chr       0    0        8    NA  NA       NA
## 16 deck         chr     199    2.3      9    NA  NA       NA
## 17 num          chr     199    2.3   1818    NA  NA       NA
## 18 side         chr     199    2.3      3    NA  NA       NA

boşlukları “NA” ile dolduralım

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

bu sütunlere NA ekleyelim

train$HomePlanet <- addNA(train$HomePlanet)
test$HomePlanet <- addNA(test$HomePlanet)
levels(train$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   NA
levels(train$HomePlanet)[is.na(levels(train$HomePlanet))] <- "NA"
levels(test$HomePlanet)[is.na(levels(test$HomePlanet))] <- "NA"
levels(train$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   "NA"
train %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA       NA
##  2 HomePlanet   fct       0    0        4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Destination  chr     182    2.1      4    NA  NA       NA
##  5 Age          dbl     179    2.1     81     0  28.8     79
##  6 VIP          lgl     203    2.3      3     0   0.02     1
##  7 RoomService  dbl     181    2.1   1274     0 225.   14327
##  8 FoodCourt    dbl     183    2.1   1508     0 458.   29813
##  9 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 10 Spa          dbl     183    2.1   1328     0 311.   22408
## 11 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 12 Name         chr     200    2.3   8474    NA  NA       NA
## 13 Transported  lgl       0    0        2     0   0.5      1
## 14 ailenum      chr       0    0     6217    NA  NA       NA
## 15 ailesira     chr       0    0        8    NA  NA       NA
## 16 deck         chr     199    2.3      9    NA  NA       NA
## 17 num          chr     199    2.3   1818    NA  NA       NA
## 18 side         chr     199    2.3      3    NA  NA       NA

ortalamaları hespalayalım

train <- train %>%
  group_by(HomePlanet,Destination) %>%
  mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))
test <- test %>%
  group_by(HomePlanet,Destination) %>%
  mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))
train %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA       NA
##  2 HomePlanet   fct       0    0        4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Destination  chr     182    2.1      4    NA  NA       NA
##  5 Age          dbl       0    0       91     0  28.8     79
##  6 VIP          lgl     203    2.3      3     0   0.02     1
##  7 RoomService  dbl     181    2.1   1274     0 225.   14327
##  8 FoodCourt    dbl     183    2.1   1508     0 458.   29813
##  9 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 10 Spa          dbl     183    2.1   1328     0 311.   22408
## 11 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 12 Name         chr     200    2.3   8474    NA  NA       NA
## 13 Transported  lgl       0    0        2     0   0.5      1
## 14 ailenum      chr       0    0     6217    NA  NA       NA
## 15 ailesira     chr       0    0        8    NA  NA       NA
## 16 deck         chr     199    2.3      9    NA  NA       NA
## 17 num          chr     199    2.3   1818    NA  NA       NA
## 18 side         chr     199    2.3      3    NA  NA       NA

cryslop için

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

side için

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

ortalamaları hesaplayalım

train <- train %>%
  group_by(Destination) %>%
  mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))
test <- test %>%
  group_by(Destination) %>%
  mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))
train %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.8    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0     1277     0 225.  14327
##  8 FoodCourt    dbl     183    2.1   1508     0 458.  29813
##  9 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 10 Spa          dbl     183    2.1   1328     0 311.  22408
## 11 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 12 Name         chr     200    2.3   8474    NA  NA      NA
## 13 Transported  lgl       0    0        2     0   0.5     1
## 14 ailenum      chr       0    0     6217    NA  NA      NA
## 15 ailesira     chr       0    0        8    NA  NA      NA
## 16 deck         chr     199    2.3      9    NA  NA      NA
## 17 num          chr     199    2.3   1818    NA  NA      NA
## 18 side         fct       0    0        3    NA  NA      NA

histogramları ekleyelim

library(DataExplorer)
create_report(train)
## 
## 
## processing file: report.rmd
## 
  |                                           
  |                                     |   0%
  |                                           
  |.                                    |   2%                                 
  |                                           
  |..                                   |   5% [global_options]                
  |                                           
  |...                                  |   7%                                 
  |                                           
  |....                                 |  10% [introduce]                     
  |                                           
  |....                                 |  12%                                 
  |                                           
  |.....                                |  14% [plot_intro]                    
  |                                           
  |......                               |  17%                                 
  |                                           
  |.......                              |  19% [data_structure]                
  |                                           
  |........                             |  21%                                 
  |                                           
  |.........                            |  24% [missing_profile]               
  |                                           
  |..........                           |  26%                                 
  |                                           
  |...........                          |  29% [univariate_distribution_header]
  |                                           
  |...........                          |  31%                                 
  |                                           
  |............                         |  33% [plot_histogram]                
  |                                           
  |.............                        |  36%                                 
  |                                           
  |..............                       |  38% [plot_density]                  
  |                                           
  |...............                      |  40%                                 
  |                                           
  |................                     |  43% [plot_frequency_bar]            
  |                                           
  |.................                    |  45%                                 
  |                                           
  |..................                   |  48% [plot_response_bar]             
  |                                           
  |..................                   |  50%                                 
  |                                           
  |...................                  |  52% [plot_with_bar]                 
  |                                           
  |....................                 |  55%                                 
  |                                           
  |.....................                |  57% [plot_normal_qq]                
  |                                           
  |......................               |  60%                                 
  |                                           
  |.......................              |  62% [plot_response_qq]              
  |                                           
  |........................             |  64%                                 
  |                                           
  |.........................            |  67% [plot_by_qq]                    
  |                                           
  |..........................           |  69%                                 
  |                                           
  |..........................           |  71% [correlation_analysis]          
  |                                           
  |...........................          |  74%                                 
  |                                           
  |............................         |  76% [principal_component_analysis]  
  |                                           
  |.............................        |  79%                                 
  |                                           
  |..............................       |  81% [bivariate_distribution_header] 
  |                                           
  |...............................      |  83%                                 
  |                                           
  |................................     |  86% [plot_response_boxplot]         
  |                                           
  |.................................    |  88%                                 
  |                                           
  |.................................    |  90% [plot_by_boxplot]               
  |                                           
  |..................................   |  93%                                 
  |                                           
  |...................................  |  95% [plot_response_scatterplot]     
  |                                           
  |.................................... |  98%                                 
  |                                           
  |.....................................| 100% [plot_by_scatterplot]           
## output file: C:/Users/ahmat/OneDrive/سطح المكتب/fini/report.knit.md
## "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/pandoc" +RTS -K512m -RTS "C:\Users\ahmat\OneDrive\5793~1\fini\REPORT~1.MD" --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc2bfc3c62673b.html --lua-filter "C:\Users\ahmat\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\ahmat\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\latex-div.lua" --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template "C:\Users\ahmat\AppData\Local\R\win-library\4.3\rmarkdown\rmd\h\default.html" --no-highlight --variable highlightjs=1 --variable theme=yeti --mathjax --variable "mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" --include-in-header "C:\Users\ahmat\AppData\Local\Temp\RtmpOaHStc\rmarkdown-str2bfc11ed6822.html"
## 
## Output created: report.html

bazı önemli histogramlar

Notlar: açıklayalım

Çoğu insan hiç para harcamaz (solda görebileceğimiz gibi). Harcamaların dağılımı katlanarak azalıyor (sağda görebileceğimiz gibi). Az sayıda aykırı değer var. Taşınan insanlar daha az harcama eğilimindeydi. RoomService, Spa ve VRDeck’in FoodCourt ve Alışveriş Merkezi’ne göre farklı dağıtımları vardır; bunu lüks ve temel olanaklar olarak düşünebiliriz. İç yüzü:

5 olanağın tamamındaki toplam harcamayı izleyen yeni bir özellik oluşturun. Kişinin hiçbir şey harcamadığını gösteren ikili özellik oluşturun. (yani toplam harcama 0’dır). Eğikliği azaltmak için log dönüşümünü kullanın.

yai dağılımı

açılaması

0-18 yaş arası çocukların taşınma ihtimali, taşınmama ihtimalinden daha yüksekti. 18-25 yaş arası kişilerin taşınma ihtimali, taşınmama ihtimalinden daha düşüktü. 25 yaş üstü kişilerin taşınma olasılığı, taşınmama olasılığıyla hemen hemen eşitti. İç yüzü:

Yolcunun çocuk, ergen veya yetişkin olduğunu belirten yeni bir özellik oluşturun.

Harcama

Toplam harcamayı hesaplayın ve harcaması olmayan yolcuları belirleyin.

açılaması

Çoğu insan hiç para harcamaz (solda görebileceğimiz gibi). Harcamaların dağılımı katlanarak azalıyor (sağda görebileceğimiz gibi). Az sayıda aykırı değer var. Taşınan insanlar daha az harcama eğilimindeydi. RoomService, Spa ve VRDeck’in FoodCourt ve Alışveriş Merkezi’ne göre farklı dağıtımları vardır; bunu lüks ve temel olanaklar olarak düşünebiliriz. İç yüzü:

5 olanağın tamamındaki toplam harcamayı izleyen yeni bir özellik oluşturun. Kişinin hiçbir şey harcamadığını gösteren ikili özellik oluşturun. (yani toplam harcama 0’dır). Eğikliği azaltmak için log dönüşümünü kullanın.

# Hedef son derece dengeli olduğundan, neyse ki az/fazla örnekleme gibi teknikleri dikkate almamız gerekmiyor. # Yeni özellikler - eğitim seti tren[‘Harcama’]=eğitim[exp_feats].sum(axis=1) train[‘No_spending’]=(train[‘Expenditure’]==0).astype(int)

Yeni özellikler - test seti

test[‘Harcama’]=test[exp_feats].sum(axis=1) test[‘No_spending’]=(test[‘Harcama’]==0).astype(int)

Yeni özelliklerin dağılım grafiği

fig=plt.figure(figsize=(12,4)) plt.subplot(1,2,1) sns.histplot(veri=tren, x=‘Harcama’, hue=‘Taşınan’, kutular=200) plt.title(‘Toplam harcama (kesilmiş)’) plt.ylim([0,200]) plt.xlim([0,20000])

plt.subplot(1,2,2) sns.countplot(data=tren, x=‘Harcama yok’, hue=‘Taşındı’) plt.title(‘Harcama göstergesi yok’) fig.tight_layout()

hist(train$Age)

hist(train$FoodCourt)

hist(train$RoomService)

bu sutunlerdeki NA leri 0 ile değiştirelim

train <- train %>% mutate(FoodCourt = coalesce(FoodCourt, 0))
test <- test %>% mutate(FoodCourt = coalesce(FoodCourt, 0))
train %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.8    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0     1277     0 225.  14327
##  8 FoodCourt    dbl       0    0     1507     0 448.  29813
##  9 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 10 Spa          dbl     183    2.1   1328     0 311.  22408
## 11 VRDeck       dbl     188    2.2   1307     0 305.  24133
## 12 Name         chr     200    2.3   8474    NA  NA      NA
## 13 Transported  lgl       0    0        2     0   0.5     1
## 14 ailenum      chr       0    0     6217    NA  NA      NA
## 15 ailesira     chr       0    0        8    NA  NA      NA
## 16 deck         chr     199    2.3      9    NA  NA      NA
## 17 num          chr     199    2.3   1818    NA  NA      NA
## 18 side         fct       0    0        3    NA  NA      NA
test %>% 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     4277    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.7    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0      846     0 219.  11567
##  8 FoodCourt    dbl       0    0      902     0 429.  25273
##  9 ShoppingMall dbl      98    2.3    716     0 177.   8292
## 10 Spa          dbl     101    2.4    834     0 303.  19844
## 11 VRDeck       dbl      80    1.9    797     0 311.  22272
## 12 Name         chr      94    2.2   4177    NA  NA      NA
## 13 ailenum      chr       0    0     3063    NA  NA      NA
## 14 ailesira     chr       0    0        8    NA  NA      NA
## 15 deck         chr     100    2.3      9    NA  NA      NA
## 16 num          chr     100    2.3   1506    NA  NA      NA
## 17 side         fct       0    0        3    NA  NA      NA
train <- train %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0), Spa = coalesce(Spa, 0), VRDeck = coalesce(VRDeck, 0))
test <- test %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0), Spa = coalesce(Spa, 0), VRDeck = coalesce(VRDeck, 0))
train %>% describe_all()
## # A tibble: 18 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.8    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0     1277     0 225.  14327
##  8 FoodCourt    dbl       0    0     1507     0 448.  29813
##  9 ShoppingMall dbl       0    0     1115     0 170.  23492
## 10 Spa          dbl       0    0     1327     0 305.  22408
## 11 VRDeck       dbl       0    0     1306     0 298.  24133
## 12 Name         chr     200    2.3   8474    NA  NA      NA
## 13 Transported  lgl       0    0        2     0   0.5     1
## 14 ailenum      chr       0    0     6217    NA  NA      NA
## 15 ailesira     chr       0    0        8    NA  NA      NA
## 16 deck         chr     199    2.3      9    NA  NA      NA
## 17 num          chr     199    2.3   1818    NA  NA      NA
## 18 side         fct       0    0        3    NA  NA      NA
train <- train %>% select(-Name)
test <- test %>% select(-Name)
train %>% describe_all()
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.8    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0     1277     0 225.  14327
##  8 FoodCourt    dbl       0    0     1507     0 448.  29813
##  9 ShoppingMall dbl       0    0     1115     0 170.  23492
## 10 Spa          dbl       0    0     1327     0 305.  22408
## 11 VRDeck       dbl       0    0     1306     0 298.  24133
## 12 Transported  lgl       0    0        2     0   0.5     1
## 13 ailenum      chr       0    0     6217    NA  NA      NA
## 14 ailesira     chr       0    0        8    NA  NA      NA
## 15 deck         chr     199    2.3      9    NA  NA      NA
## 16 num          chr     199    2.3   1818    NA  NA      NA
## 17 side         fct       0    0        3    NA  NA      NA
train$deck <- addNA(train$deck)
test$deck <- addNA(test$deck)
train %>% describe_all()
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.8    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0     1277     0 225.  14327
##  8 FoodCourt    dbl       0    0     1507     0 448.  29813
##  9 ShoppingMall dbl       0    0     1115     0 170.  23492
## 10 Spa          dbl       0    0     1327     0 305.  22408
## 11 VRDeck       dbl       0    0     1306     0 298.  24133
## 12 Transported  lgl       0    0        2     0   0.5     1
## 13 ailenum      chr       0    0     6217    NA  NA      NA
## 14 ailesira     chr       0    0        8    NA  NA      NA
## 15 deck         fct       0    0        9    NA  NA      NA
## 16 num          chr     199    2.3   1818    NA  NA      NA
## 17 side         fct       0    0        3    NA  NA      NA
levels(train$deck)[is.na(levels(train$deck))] <- "NA"
levels(test$deck)[is.na(levels(test$deck))] <- "NA"
train %>% describe_all()
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA      NA
##  2 HomePlanet   fct       0    0        4    NA  NA      NA
##  3 CryoSleep    fct       0    0        3    NA  NA      NA
##  4 Destination  fct       0    0        4    NA  NA      NA
##  5 Age          dbl       0    0       91     0  28.8    79
##  6 VIP          fct       0    0        3    NA  NA      NA
##  7 RoomService  dbl       0    0     1277     0 225.  14327
##  8 FoodCourt    dbl       0    0     1507     0 448.  29813
##  9 ShoppingMall dbl       0    0     1115     0 170.  23492
## 10 Spa          dbl       0    0     1327     0 305.  22408
## 11 VRDeck       dbl       0    0     1306     0 298.  24133
## 12 Transported  lgl       0    0        2     0   0.5     1
## 13 ailenum      chr       0    0     6217    NA  NA      NA
## 14 ailesira     chr       0    0        8    NA  NA      NA
## 15 deck         fct       0    0        9    NA  NA      NA
## 16 num          chr     199    2.3   1818    NA  NA      NA
## 17 side         fct       0    0        3    NA  NA      NA
train$num <- addNA(train$num)
test$num <- addNA(test$num)
levels(train$num)[is.na(levels(train$num))] <- "NA"
levels(test$num)[is.na(levels(test$num))] <- "NA"
train %>% describe_all()
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 PassengerId  chr       0      0   8693    NA  NA      NA
##  2 HomePlanet   fct       0      0      4    NA  NA      NA
##  3 CryoSleep    fct       0      0      3    NA  NA      NA
##  4 Destination  fct       0      0      4    NA  NA      NA
##  5 Age          dbl       0      0     91     0  28.8    79
##  6 VIP          fct       0      0      3    NA  NA      NA
##  7 RoomService  dbl       0      0   1277     0 225.  14327
##  8 FoodCourt    dbl       0      0   1507     0 448.  29813
##  9 ShoppingMall dbl       0      0   1115     0 170.  23492
## 10 Spa          dbl       0      0   1327     0 305.  22408
## 11 VRDeck       dbl       0      0   1306     0 298.  24133
## 12 Transported  lgl       0      0      2     0   0.5     1
## 13 ailenum      chr       0      0   6217    NA  NA      NA
## 14 ailesira     chr       0      0      8    NA  NA      NA
## 15 deck         fct       0      0      9    NA  NA      NA
## 16 num          fct       0      0   1818    NA  NA      NA
## 17 side         fct       0      0      3    NA  NA      NA

train ve test veri çerçevelerine “aile” adlı yeni bir sütun ekleyelim. Bu sütun, ailenum adlı bir diğer sütundaki benzersiz aile numaralarını belirtir. Eğer aynı aile numarası birden fazla kez görülüyorsa (tekrar ediyorsa), o satıra ait aile sütunu 1 olarak işaretlenir, aksi halde 0 olarak işaretlenir. Bu, her bir gözlemin ait olduğu aileyi belirleme amacına hizmet eder.

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", "ailesira",  "aile")] , 20)
## # A tibble: 20 × 4
##    PassengerId ailenum ailesira  aile
##    <chr>       <chr>   <chr>    <dbl>
##  1 0001_01     0001    01           0
##  2 0002_01     0002    01           0
##  3 0003_01     0003    01           1
##  4 0003_02     0003    02           1
##  5 0004_01     0004    01           0
##  6 0005_01     0005    01           0
##  7 0006_01     0006    01           1
##  8 0006_02     0006    02           1
##  9 0007_01     0007    01           0
## 10 0008_01     0008    01           1
## 11 0008_02     0008    02           1
## 12 0008_03     0008    03           1
## 13 0009_01     0009    01           0
## 14 0010_01     0010    01           0
## 15 0011_01     0011    01           0
## 16 0012_01     0012    01           0
## 17 0014_01     0014    01           0
## 18 0015_01     0015    01           0
## 19 0016_01     0016    01           0
## 20 0017_01     0017    01           1
train <- train %>% select(-c(ailenum, ailesira, num))
test <- test %>% select(-c(ailenum, ailesira, num))
train %>% describe_all()
## # A tibble: 15 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0      0   8693    NA  NA       NA
##  2 HomePlanet   fct       0      0      4    NA  NA       NA
##  3 CryoSleep    fct       0      0      3    NA  NA       NA
##  4 Destination  fct       0      0      4    NA  NA       NA
##  5 Age          dbl       0      0     91     0  28.8     79
##  6 VIP          fct       0      0      3    NA  NA       NA
##  7 RoomService  dbl       0      0   1277     0 225.   14327
##  8 FoodCourt    dbl       0      0   1507     0 448.   29813
##  9 ShoppingMall dbl       0      0   1115     0 170.   23492
## 10 Spa          dbl       0      0   1327     0 305.   22408
## 11 VRDeck       dbl       0      0   1306     0 298.   24133
## 12 Transported  lgl       0      0      2     0   0.5      1
## 13 deck         fct       0      0      9    NA  NA       NA
## 14 side         fct       0      0      3    NA  NA       NA
## 15 aile         dbl       0      0      2     0   0.45     1

logistic

Logistik regresyonun katsayıları, ilgili bağımsız değişkenin bağımlı değişken üzerindeki etkisini belirtir. Pozitif bir katsayı, bağımsız değişkenin arttığında bağımlı değişkenin olasılığının arttığını gösterir. Negatif bir katsayı ise bağımsız değişkenin arttığında bağımlı değişkenin olasılığının azaldığını gösterir.

train için Bu R dilindeki kod, bir veri çerçevesinden belirli bir sütun aralığını (2. sütundan 15. sütuna kadar olan sütunlar) seçmeyi amaçlar. İşte bu kodun açıklamaları: train: Bu, üzerinde işlem yapılacak olan veri çerçevesini temsil eder. [2:15]: Bu ifade, veri çerçevesindeki sütunları seçmek için kullanılır. Burada 2:15, 2. sütundan başlayarak 15. sütuna kadar olan tüm sütunları seçer.

test için Bu R dilindeki kod, bir veri çerçevesinden belirli bir sütun aralığını (2. sütundan 15. sütuna kadar olan sütunlar) seçmeyi amaçlar. İşte bu kodun açıklamaları: train: Bu, üzerinde işlem yapılacak olan veri çerçevesini temsil eder. [2:15]: Bu ifade, veri çerçevesindeki sütunları seçmek için kullanılır. Burada 2:15, 2. sütundan başlayarak 15. sütuna kadar olan tüm sütunları seçer

train_set <- train[2:15]
test_set <- test[2:14]
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)
logistic = glm(formula = Transported ~ ., family = binomial,data = training_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
prob_pred = predict(logistic, type = 'response' ,newdata = testing_set[-11])
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
y_pred = ifelse(prob_pred > 0.5, 1,0)
y_true= ifelse(testing_set[11] == TRUE, 1,0)
cm = table(y_true, y_pred)
cm
##       y_pred
## y_true   0   1
##      0 819 260
##      1 189 905
(819 + 905)/(819 + 905 + 260 + 189)
## [1] 0.7933732
logistic_son = glm(formula = Transported ~ ., family = binomial, data = train_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
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
y_pred <- ifelse(prob_pred > 0.5, 1, 0)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <- as.vector(Transported)
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
library(stringr)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_logistic1.csv" , row.names = FALSE, quote = FALSE)

###Navie”

Naive Bayes, özellikle sınıflandırma problemlerinde kullanılır. Örneğin, bir e-postanın spam veya spam olmayan olarak sınıflandırılması gibi.

#Ekonometri Uygulaması:

Ekonometri dersimizde, özellikle sınıflandırma problemleriyle karşılaşabilirsiniz. Örneğin, bir müşterinin bir ürünü satın alıp almayacağını tahmin etmek gibi. Naive Bayes, bu tür sınıflandırma problemlerinde etkili bir şekilde kullanılabilir.

#Olasılık Temelli Yaklaşım:

#Naive Bayes, her sınıf için olasılıkları hesaplar ve daha sonra bir veri noktasını sınıflandırır. En yüksek olasılığa sahip sınıf, veri noktasına atanır.

#Özellik Bağımsızlığı:

#Naive Bayes’in temel varsayımı, özellikler arasında bağımsızlık olduğudur. Bu varsayım genellikle gerçek dünyada tam olarak geçerli olmasa da, model genellikle iyi performans gösterir. #Öğrendiklerimizle ilgili olarak, Naive Bayes’in sınıflandırma problemlerine nasıl uygulandığını anlamak ve belirli bir ekonometri bağlamında bu algoritmanın nasıl kullanılabileceğini düşünmek faydalı olabilir.

##Bu R kodu, e1071 paketini kullanarak Naive Bayes sınıflandırma modeli kurmayı ve bu modeli kullanarak test veri setindeki gözlemleri sınıflandırmayı amaçlamaktadır.

library(e1071)

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

Bu R kodu, Naive Bayes modeli tarafından yapılan sınıflandırma skorlarına dayalı olarak bir ikili sınıflandırma eşiği belirleyerek, sınıflandırma tahminlerini elde etmeyi amaçlar.

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

Bu R kodu, yukarıda oluşturulan y_true (gerçek sınıflar) ve y_pred (tahmin edilen sınıflar) vektörleri kullanılarak bir karışıklık matrisi (confusion matrix) oluşturmayı amaçlar.

cm = table(y_true, y_pred)

Bu R kodu, önceki adımda oluşturulan karışıklık matrisini (cm) ekrana bastırmak amacıyla kullanılır. Yani, bu ifade, karışıklık matrisinin içeriğini görmek için kullanılır.

cm
##       y_pred
## y_true    0    1
##      0  510  569
##      1   78 1016
(510 + 1016)/(510 + 1016 +  569+ 78)
## [1] 0.7022549

Bu R kodu, e1071 paketinde yer alan naiveBayes fonksiyonu kullanılarak bir Naive Bayes sınıflandırma modeli oluşturmayı amaçlar. İşte bu kodun adım adım açıklaması:

nb_son = naiveBayes(Transported ~ ., data = train_set)

daha önce eğitilmiş olan Naive Bayes sınıflandırma modeli (nb_son) kullanılarak yeni bir veri setindeki gözlemlerin sınıflandırma tahminlerini yapmayı amaçlar. İşte bu kodun adım adım açıklaması:

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

bir koşul ifadesini kullanarak bir vektörün değerlerini dönüştürmeyi amaçlar. İşte bu kodun adım adım açıklaması:

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

daha önce oluşturulan y_pred vektörünü kullanarak bir sınıflandırma sonucunu karakter dizisine dönüştürmeyi ve tahmin edilen sınıfların yanı sıra test setindeki yolcu ID’lerini elde etmeyi amaçlar. İşte bu kodun adım adım açıklaması:

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

daha önce oluşturulan Transported karakter dizisini bir vektöre dönüştürmeyi amaçlar. Ancak, bu işlemin as.vector() fonksiyonu ile gerçekleştirilmesi pek gerekli değildir, çünkü as.character() fonksiyonu zaten bir karakter dizisini bir karakter vektörüne dönüştürebilir.

Transported <- as.vector(Transported)

daha önce elde edilen PassengerId ve Transported vektörlerini kullanarak bir veri çerçevesi oluşturmayı amaçlar. İşte bu kodun adım adım açıklaması:

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

Bu R kodu, daha önce oluşturulan submission nesnesini bir veri çerçevesine dönüştürmeyi amaçlar. as.data.frame() fonksiyonu, bir nesneyi veri çerçevesine çevirmek için kullanılır. İşte bu kodun adım adım açıklaması:

submission <- as.data.frame(submission)

Bu R kodu, submission veri çerçevesindeki “Transported” sütunundaki karakter dizilerin baş harfini büyük yapmayı amaçlar. str_to_title() fonksiyonu, karakter dizisinin her kelimesinin baş harfini büyük yapar.

submission$Transported <- str_to_title(submission$Transported)

Bu R kodu, submission veri çerçevesini bir CSV dosyasına yazmayı amaçlar. İşte bu kodun adım adım açıklaması:

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

SVM

Destek Vektör Makineleri (SVM), özellikle sınıflandırma ve regresyon problemleri için kullanılan bir makine öğrenimi modelidir. SVM, veri noktalarını bir hiper düzlemle sınıflandırmaya veya regresyon yapmaya çalışır. Bu modelin temel amacı, veri noktalarını sınıflara ayıran bir hiper düzlem bulmaktır. İşte SVM’nin temel prensipleri ve kullanımı hakkında bilgiler:

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

Bu R kodu, karışıklık matrisi (confusion matrix) oluşturmayı amaçlar. Karışıklık matrisi, sınıflandırma modelinin performansını değerlendirmek için kullanılan bir matristir. Bu matris, modelin gerçek sınıflara (y_true) ve model tarafından yapılan sınıflandırmalara (y_pred) göre doğru ve yanlış sınıflandırmaları gösterir.

cm = table(y_true, y_pred)

#Bu R kodu, önceki adımda oluşturulan karışıklık matrisini (cm) ekrana bastırmak amacıyla kullanılır. Yani, bu ifade, karışıklık matrisinin içeriğini görmek için kullanılır.

cm
##       y_pred
## y_true FALSE TRUE
##      0   510  569
##      1    78 1016
(510 + 1016)/(510 + 1016 +569 + 78)
## [1] 0.7022549

bu R kodu, e1071 paketindeki svm fonksiyonunu kullanarak bir destek vektör makinesi (SVM) sınıflandırma modeli oluşturmayı amaçlar. İşte bu kodun adım adım açıklaması:

svm_son <- svm(Transported ~ ., data = train_set, type = 'C-classification', kernel = 'linear')

Bu R kodu, daha önce eğitilmiş olan destek vektör makinesi (SVM) sınıflandırma modeli (svm_son) kullanılarak yeni bir veri setindeki gözlemlerin sınıflandırma tahminlerini yapmayı amaçlar. İşte bu kodun adım adım açıklaması:

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

Bu R kodu, daha önce elde edilen preds veri çerçevesindeki sınıflandırma tahminlerini (preds$.) y_pred adlı bir vektöre atamayı amaçlar. İşte bu kodun adım adım açıklaması:

y_pred = preds$.

Bu R kodu, daha önce elde edilen y_pred vektörünü kullanarak sınıflandırma tahminlerini karakter dizisine dönüştürmeyi ve test setindeki yolcu ID’lerini (PassengerId) elde etmeyi amaçlar. İşte bu kodun adım adım açıklaması:

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

daha önce oluşturulan Transported karakter dizisini bir vektöre dönüştürmeyi amaçlar. Ancak, as.vector() fonksiyonu kullanılmasına gerek yoktur, çünkü as.character() fonksiyonu zaten bir karakter dizisini bir karakter vektörüne dönüştürebilir.

Transported <- as.vector(Transported)

daha önce elde edilen PassengerId ve Transported vektörlerini kullanarak bir veri çerçevesi oluşturmayı amaçlar. İşte bu kodun adım adım açıklaması:

submission <- cbind(PassengerId, Transported)

#submission adlı nesnenin türünü veri çerçevesine dönüştürmeyi amaçlar. İşte bu kodun adım adım açıklaması:

submission <- as.data.frame(submission)

submission veri çerçevesindeki “Transported” sütunundaki karakter dizilerin baş harfini büyük yapmayı amaçlar. str_to_title() fonksiyonu, karakter dizisinin her kelimesinin baş harfini büyük yapar.

submission$Transported <- str_to_title(submission$Transported)

submission veri çerçevesini bir CSV dosyasına yazmayı amaçlar. İşte bu kodun adım adım açıklaması:

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

decisionion trees

Karar Ağaçları, makine öğrenimi ve istatistikte sınıflandırma ve regresyon problemlerini çözmek için kullanılan bir modelleme tekniğidir. Temelde bir ağaç yapısı içinde kararlar alarak veri noktalarını belirli sonuçlara sınıflandıran veya değer tahmin eden bir modeldir. İşte temel kavramlarıyla birlikte Karar Ağaçları hakkında genel bir açıklama:

#Decision trees (karar ağaçları), makine öğrenimi ve istatistikte sınıflandırma ve regresyon problemlerini çözmek için kullanılan bir modelleme tekniğidir. Bu ağaç yapıları, girdi özellikleri üzerinde kararlar alarak veri noktalarını belirli sonuçlara sınıflandırır veya değer tahmin eder. Karar ağaçları, anlaşılır ve yorumlanabilir bir şekilde çalışması, veri setindeki ilişkileri anlamak için kullanılabilmesi ve hiperparametrelerini ayarlamak için kullanıcıya esneklik sağlaması gibi avantajlara sahiptir.

#decision trees

#İşte karar ağaçlarına genel bir bakış:

#Temel Kavramlar:

#Kök Düğüm (Root Node): Ağacın başlangıç noktasıdır ve tüm veri setini temsil eder. #Dallanma (Splitting): Bir düğümün alt düğümlere ayrılma sürecidir. Bu, bir özellik ve bir eşik değerine göre gerçekleşir. #Düğüm (Node): Ağaçtaki her bir noktayı temsil eder ve bir karar içerir. #Yaprak (Leaf): Sonuç düğümüdür ve bir sınıflandırma probleminde bir etiket veya regresyon problemi durumunda bir tahmin içerir.

#Karar Ağacı Oluşturma:

Özellik Seçimi: Veri setindeki özellikler arasında en iyi bölünmeyi sağlayan özelliği seçer. Buna genellikle bilgi kazancı (information gain) veya Gini indeksi gibi ölçülerle karar verilir.

Bölünme (Splitting): Seçilen özelliğe ve eşik değerine göre veri setini iki alt küme (sol ve sağ dallar) olarak böler.

#Tekrarlama: Her alt kümede aynı süreci tekrar eder. Bu, ağacın derinliğini ve karmaşıklığını kontrol eden bir parametredir.

#Sonlandırma Koşulları:

Ağacın belirli bir derinliğe ulaşması.

Bir düğümde belirli bir minimum veri noktasına ulaşılması.

Bilgi kazancının veya Gini indeksinin belirli bir eşiğin altına düşmesi gibi kriterlere dayalı durdurma koşulları.

Sınıflandırma ve Regresyon:

Sınıflandırma Ağaçları: Yaprak düğümleri genellikle sınıfları temsil eder ve bir veri noktasını belirli bir sınıfa atar.

#Regresyon Ağaçları: Yaprak düğümleri bir tahmin değeri içerir ve bir veri noktasının çıktısını tahmin etmek için kullanılır.

#Model Değerlendirme:

#Ağaç oluşturulduktan sonra, genellikle ağacın performansını değerlendirmek için bağımsız bir test seti kullanılır. #Karar ağaçları, birçok uygulama alanında kullanılabilir, örneğin müşteri segmentasyonu, hastalık teşhisi, kredi değerlendirmesi ve daha pek çok alanda. Hiperparametre ayarlaması ve ağacın aşırı uydurulmasını kontrol etmek için önlemler almak önemlidir, çünkü karar ağaçları eğitim veri setine aşırı uydurabilecekleri bilinir.

library(rpart)
library(rpart.plot)
library(randomForest)
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attaching package: 'randomForest'
## The following object is masked from 'package:ggplot2':
## 
##     margin
## The following object is masked from 'package:dplyr':
## 
##     combine
library(caret)
## Loading required package: lattice
## 
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
## 
##     lift
training_set$Transported <- as.factor(training_set$Transported)
testing_set$Transported <- as.factor(testing_set$Transported)
train_set$Transported <- as.factor(train_set$Transported)
fit_tree <- rpart::rpart(Transported ~ ., data = training_set)
summary(fit_tree)
## Call:
## rpart::rpart(formula = Transported ~ ., data = training_set)
##   n= 6520 
## 
##           CP nsplit rel error    xerror       xstd
## 1 0.43016069      0 1.0000000 1.0000000 0.01247595
## 2 0.03574372      1 0.5698393 0.5698393 0.01123791
## 3 0.01000000      4 0.4626082 0.4663164 0.01052385
## 
## Variable importance
##    CryoSleep          Spa       VRDeck  RoomService    FoodCourt ShoppingMall 
##           43           16           15           12            7            4 
##   HomePlanet         deck 
##            2            1 
## 
## Node number 1: 6520 observations,    complexity param=0.4301607
##   predicted class=TRUE   expected loss=0.496319  P(node) =1
##     class counts:  3236  3284
##    probabilities: 0.496 0.504 
##   left son=2 (4240 obs) right son=3 (2280 obs)
##   Primary splits:
##       CryoSleep    splits as  LRL,        improve=683.0583, (0 missing)
##       RoomService  < 0.5    to the right, improve=412.4664, (0 missing)
##       Spa          < 0.5    to the right, improve=372.3306, (0 missing)
##       VRDeck       < 0.5    to the right, improve=353.3889, (0 missing)
##       ShoppingMall < 0.5    to the right, improve=228.9794, (0 missing)
##   Surrogate splits:
##       Spa          < 0.5    to the right, agree=0.716, adj=0.188, (0 split)
##       FoodCourt    < 0.5    to the right, agree=0.702, adj=0.148, (0 split)
##       VRDeck       < 0.5    to the right, agree=0.700, adj=0.141, (0 split)
##       RoomService  < 0.5    to the right, agree=0.696, adj=0.130, (0 split)
##       ShoppingMall < 0.5    to the right, agree=0.686, adj=0.101, (0 split)
## 
## Node number 2: 4240 observations,    complexity param=0.03574372
##   predicted class=FALSE  expected loss=0.3358491  P(node) =0.6503067
##     class counts:  2816  1424
##    probabilities: 0.664 0.336 
##   left son=4 (1087 obs) right son=5 (3153 obs)
##   Primary splits:
##       RoomService < 343    to the right, improve=104.04900, (0 missing)
##       Age         < 12.5   to the right, improve= 87.14388, (0 missing)
##       Spa         < 241.5  to the right, improve= 84.79330, (0 missing)
##       FoodCourt   < 2168   to the left,  improve= 67.12339, (0 missing)
##       VRDeck      < 420.5  to the right, improve= 58.17805, (0 missing)
##   Surrogate splits:
##       HomePlanet splits as  RRLR,       agree=0.788, adj=0.175, (0 split)
##       deck       splits as  RRRLRRRRR,  agree=0.748, adj=0.016, (0 split)
##       Age        < 78.5   to the right, agree=0.744, adj=0.002, (0 split)
## 
## Node number 3: 2280 observations
##   predicted class=TRUE   expected loss=0.1842105  P(node) =0.3496933
##     class counts:   420  1860
##    probabilities: 0.184 0.816 
## 
## Node number 4: 1087 observations
##   predicted class=FALSE  expected loss=0.1471941  P(node) =0.1667178
##     class counts:   927   160
##    probabilities: 0.853 0.147 
## 
## Node number 5: 3153 observations,    complexity param=0.03574372
##   predicted class=FALSE  expected loss=0.400888  P(node) =0.483589
##     class counts:  1889  1264
##    probabilities: 0.599 0.401 
##   left son=10 (1034 obs) right son=11 (2119 obs)
##   Primary splits:
##       Spa          < 205    to the right, improve=131.21170, (0 missing)
##       VRDeck       < 135.5  to the right, improve=103.53150, (0 missing)
##       Age          < 12.5   to the right, improve= 60.28573, (0 missing)
##       ShoppingMall < 790.5  to the left,  improve= 45.61195, (0 missing)
##       FoodCourt    < 2200.5 to the left,  improve= 45.01959, (0 missing)
##   Surrogate splits:
##       HomePlanet splits as  RLRR,       agree=0.699, adj=0.081, (0 split)
##       deck       splits as  LRLRRRRLR,  agree=0.687, adj=0.044, (0 split)
##       VRDeck     < 2794.5 to the right, agree=0.676, adj=0.014, (0 split)
##       FoodCourt  < 3197.5 to the right, agree=0.676, adj=0.012, (0 split)
##       Age        < 59.5   to the right, agree=0.673, adj=0.002, (0 split)
## 
## Node number 10: 1034 observations
##   predicted class=FALSE  expected loss=0.1943907  P(node) =0.158589
##     class counts:   833   201
##    probabilities: 0.806 0.194 
## 
## Node number 11: 2119 observations,    complexity param=0.03574372
##   predicted class=TRUE   expected loss=0.4983483  P(node) =0.325
##     class counts:  1056  1063
##    probabilities: 0.498 0.502 
##   left son=22 (604 obs) right son=23 (1515 obs)
##   Primary splits:
##       VRDeck       < 363.5  to the right, improve=135.42270, (0 missing)
##       FoodCourt    < 2071   to the left,  improve= 50.37469, (0 missing)
##       HomePlanet   splits as  LRRL,       improve= 40.97469, (0 missing)
##       ShoppingMall < 1540.5 to the left,  improve= 31.65683, (0 missing)
##       Age          < 10.5   to the right, improve= 29.32195, (0 missing)
##   Surrogate splits:
##       FoodCourt < 7197.5 to the right, agree=0.717, adj=0.008, (0 split)
##       deck      splits as  RRLRRRRRR,  agree=0.716, adj=0.003, (0 split)
##       Age       < 68.5   to the right, agree=0.715, adj=0.002, (0 split)
## 
## Node number 22: 604 observations
##   predicted class=FALSE  expected loss=0.218543  P(node) =0.09263804
##     class counts:   472   132
##    probabilities: 0.781 0.219 
## 
## Node number 23: 1515 observations
##   predicted class=TRUE   expected loss=0.3854785  P(node) =0.232362
##     class counts:   584   931
##    probabilities: 0.385 0.615
rpart.plot(fit_tree)

preds = predict(fit_tree, newdata = testing_set[-11], type  = "class")
y_pred = ifelse(preds == TRUE, 1, 0)
cm = table(y_true, y_pred)
cm
##       y_pred
## y_true   0   1
##      0 735 344
##      1 170 924
(735 + 924)/2173
## [1] 0.7634607
fit_tree <- rpart::rpart(Transported ~ ., data = train_set)
summary(fit_tree)
## Call:
## rpart::rpart(formula = Transported ~ ., data = train_set)
##   n= 8693 
## 
##           CP nsplit rel error    xerror        xstd
## 1 0.43244496      0 1.0000000 1.0000000 0.010803454
## 2 0.03406721      1 0.5675550 0.5675550 0.009719864
## 3 0.01000000      4 0.4653534 0.4690614 0.009132086
## 
## Variable importance
##    CryoSleep          Spa       VRDeck  RoomService    FoodCourt ShoppingMall 
##           45           17           15           11            7            4 
##   HomePlanet 
##            1 
## 
## Node number 1: 8693 observations,    complexity param=0.432445
##   predicted class=TRUE   expected loss=0.4963764  P(node) =1
##     class counts:  4315  4378
##    probabilities: 0.496 0.504 
##   left son=2 (5656 obs) right son=3 (3037 obs)
##   Primary splits:
##       CryoSleep    splits as  LRL,         improve=920.2004, (0 missing)
##       RoomService  < 0.5     to the right, improve=523.3930, (0 missing)
##       Spa          < 0.5     to the right, improve=514.4709, (0 missing)
##       VRDeck       < 0.5     to the right, improve=479.5694, (0 missing)
##       ShoppingMall < 0.5     to the right, improve=302.4414, (0 missing)
##   Surrogate splits:
##       Spa          < 0.5     to the right, agree=0.716, adj=0.187, (0 split)
##       FoodCourt    < 0.5     to the right, agree=0.701, adj=0.143, (0 split)
##       VRDeck       < 0.5     to the right, agree=0.696, adj=0.129, (0 split)
##       RoomService  < 0.5     to the right, agree=0.692, adj=0.119, (0 split)
##       ShoppingMall < 0.5     to the right, agree=0.683, adj=0.092, (0 split)
## 
## Node number 2: 5656 observations,    complexity param=0.03406721
##   predicted class=FALSE  expected loss=0.3350424  P(node) =0.6506384
##     class counts:  3761  1895
##    probabilities: 0.665 0.335 
##   left son=4 (1432 obs) right son=5 (4224 obs)
##   Primary splits:
##       RoomService < 346.5   to the right, improve=121.39640, (0 missing)
##       Spa         < 266.5   to the right, improve=113.99320, (0 missing)
##       Age         < 12.5    to the right, improve=109.40550, (0 missing)
##       FoodCourt   < 1331    to the left,  improve= 98.11980, (0 missing)
##       VRDeck      < 417.5   to the right, improve= 75.47684, (0 missing)
##   Surrogate splits:
##       HomePlanet splits as  RRLR,        agree=0.785, adj=0.151, (0 split)
##       deck       splits as  RRRLRRRRR,   agree=0.749, adj=0.007, (0 split)
##       Age        < 78.5    to the right, agree=0.747, adj=0.001, (0 split)
## 
## Node number 3: 3037 observations
##   predicted class=TRUE   expected loss=0.1824169  P(node) =0.3493616
##     class counts:   554  2483
##    probabilities: 0.182 0.818 
## 
## Node number 4: 1432 observations
##   predicted class=FALSE  expected loss=0.1571229  P(node) =0.1647302
##     class counts:  1207   225
##    probabilities: 0.843 0.157 
## 
## Node number 5: 4224 observations,    complexity param=0.03406721
##   predicted class=FALSE  expected loss=0.3953598  P(node) =0.4859082
##     class counts:  2554  1670
##    probabilities: 0.605 0.395 
##   left son=10 (1391 obs) right son=11 (2833 obs)
##   Primary splits:
##       Spa          < 205     to the right, improve=168.00700, (0 missing)
##       VRDeck       < 135.5   to the right, improve=129.77700, (0 missing)
##       Age          < 12.5    to the right, improve= 76.46367, (0 missing)
##       FoodCourt    < 2507.5  to the left,  improve= 63.32833, (0 missing)
##       ShoppingMall < 627     to the left,  improve= 59.33765, (0 missing)
##   Surrogate splits:
##       HomePlanet splits as  RLRR,        agree=0.695, adj=0.073, (0 split)
##       deck       splits as  LRLRRRRLR,   agree=0.684, adj=0.042, (0 split)
##       FoodCourt  < 3197.5  to the right, agree=0.676, adj=0.017, (0 split)
##       VRDeck     < 2052    to the right, agree=0.673, adj=0.006, (0 split)
##       Age        < 75.5    to the right, agree=0.672, adj=0.003, (0 split)
## 
## Node number 10: 1391 observations
##   predicted class=FALSE  expected loss=0.194105  P(node) =0.1600138
##     class counts:  1121   270
##    probabilities: 0.806 0.194 
## 
## Node number 11: 2833 observations,    complexity param=0.03406721
##   predicted class=FALSE  expected loss=0.4941758  P(node) =0.3258944
##     class counts:  1433  1400
##    probabilities: 0.506 0.494 
##   left son=22 (814 obs) right son=23 (2019 obs)
##   Primary splits:
##       VRDeck       < 355     to the right, improve=185.97790, (0 missing)
##       FoodCourt    < 2069.5  to the left,  improve= 64.45210, (0 missing)
##       HomePlanet   splits as  LRRL,        improve= 46.60726, (0 missing)
##       ShoppingMall < 1540.5  to the left,  improve= 38.47446, (0 missing)
##       Age          < 7.5     to the right, improve= 36.46439, (0 missing)
##   Surrogate splits:
##       FoodCourt   < 10134.5 to the right, agree=0.715, adj=0.007, (0 split)
##       Age         < 68.5    to the right, agree=0.714, adj=0.004, (0 split)
##       deck        splits as  RRLRRRRRR,   agree=0.714, adj=0.004, (0 split)
##       RoomService < 343     to the right, agree=0.713, adj=0.001, (0 split)
## 
## Node number 22: 814 observations
##   predicted class=FALSE  expected loss=0.2088452  P(node) =0.09363856
##     class counts:   644   170
##    probabilities: 0.791 0.209 
## 
## Node number 23: 2019 observations
##   predicted class=TRUE   expected loss=0.3907875  P(node) =0.2322558
##     class counts:   789  1230
##    probabilities: 0.391 0.609
rpart.plot(fit_tree)

preds = predict(fit_tree, newdata = test_set, type = "class")
y_pred = ifelse(preds == TRUE, TRUE, FALSE)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <- as.vector(Transported)
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "sub_dt.csv" , row.names = FALSE, quote = FALSE)

sonuç

random forest

Random Forest (Rastgele Orman), karar ağaçlarının bir araya getirilerek daha güçlü ve stabil bir model oluşturulmasını sağlayan bir ensemble (birleşik) öğrenme yöntemidir. Rastgele Orman, bir dizi karar ağacını eğitir ve her bir ağacın tahminlerini bir araya getirerek daha doğru ve genelleme yeteneği yüksek bir model elde etmeyi amaçlar. Bu yöntem, ağaçların bağımsız olarak eğitilip bir araya getirilmesi ve her biri rastgele örnekler veya özellikler üzerinde eğitilmesi özelliği ile bilinir.

fit_rf <- randomForest(Transported ~ ., data = train_set)
fit_rf$importance
##              MeanDecreaseGini
## HomePlanet          173.17427
## CryoSleep           432.12188
## Destination          92.01094
## Age                 316.75762
## VIP                  25.06949
## RoomService         448.26887
## FoodCourt           362.74678
## ShoppingMall        310.31577
## Spa                 464.74143
## VRDeck              422.39059
## deck                251.35107
## side                 72.36560
## aile                 50.41512
varImpPlot(fit_rf)

preds = predict(fit_tree, newdata = test_set, type = "class")
y_pred = ifelse(preds == TRUE, TRUE, FALSE)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <- as.vector(Transported)
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "sub_rf.csv" , row.names = FALSE, quote = FALSE)

kaggle e yükledikten sonra toplam sonuçlarım