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!
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.
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.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ 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
train[c("ailenum", "ailesira")] <- str_split_fixed(train$PassengerId, "_",2)
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[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
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
unique(train$HomePlanet)
## [1] "Europa" "Earth" "Mars" NA
levels(train$HomePlanet)
## NULL
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
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
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
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 <- 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 lgl 203 2.3 3 0 0.02 1
## 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
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: /cloud/project/report.knit.md
## /usr/lib/rstudio-server/bin/quarto/bin/tools/x86_64/pandoc +RTS -K512m -RTS /cloud/project/report.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output /cloud/project/report.html --lua-filter /cloud/lib/x86_64-pc-linux-gnu-library/4.4/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /cloud/lib/x86_64-pc-linux-gnu-library/4.4/rmarkdown/rmarkdown/lua/latex-div.lua --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template /cloud/lib/x86_64-pc-linux-gnu-library/4.4/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 /tmp/RtmpUTBFPp/rmarkdown-str58a4760e83c.html
##
## Output created: report.html
## açıklaması
TRAPPIST-1e’ye giden çoğu kişi Dünya’dan geldiği için, bu kişilerin oradan geldiğini tahmin etmek mantıklıdır. Ancak daha önce belirtildiği gibi, D güvertesindekilerden hiçbiri Dünya’dan gelmedi, bu nedenle bu kişileri filtrelememiz gerekiyor.
group #grouplara göre
Grup özelliğini modellerimizde gerçekten kullanamayız çünkü kartinalitesi (6217) çok büyük ve one-hot encoding ile boyut sayısını patlatabilir.
Diğer taraftan, Grup boyutu kullanışlı bir özellik olmalı. Aslında, özelliği daha da sıkıştırabiliriz; ‘Yalnız’ adlı bir sütun oluşturarak, birinin kendi başına seyahat edip etmediğini takip edebiliriz. Sağdaki şekil, grup boyutu=1 olanların, grup boyutu>1 olanlara göre daha az taşındığını gösteriyor.
Bu ilginç! Gözüktüğü kadarıyla Cabin_number, 300 kabinlik gruplara ayrılmış. Bu, bu özelliği her bir yolcunun hangi grupta olduğunu gösteren bir kategorik bir özelliğe sıkıştırabileceğimiz anlamına gelir.
Diğer notlar: Cabin güvertesi ‘T’, aykırı bir durum gibi görünüyor (sadece 5 örnek var).
Harcama
Toplam harcamayı hesaplayın ve harcaması olmayan yolcuları belirleyin.
Ç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.
tren[‘Harcama’]=eğitim[exp_feats].sum(axis=1) train[‘No_spending’]=(train[‘Expenditure’]==0).astype(int)
test[‘Harcama’]=test[exp_feats].sum(axis=1) test[‘No_spending’]=(test[‘Harcama’]==0).astype(int)
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)
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 lgl 203 2.3 3 0 0.02 1
## 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 lgl 93 2.2 3 0 0.02 1
## 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 lgl 203 2.3 3 0 0.02 1
## 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 lgl 203 2.3 3 0 0.02 1
## 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 lgl 203 2.3 3 0 0.02 1
## 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 lgl 203 2.3 3 0 0.02 1
## 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 lgl 203 2.3 3 0 0.02 1
## 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$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 lgl 203 2.3 3 0 0.02 1
## 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 regresyon, bir bağımlı değişkenin (outcome) kategorik bir formda (genellikle ikili: 0 veya 1) olduğu durumlar için kullanılan istatistiksel bir regresyon yöntemidir. Bu yöntem, bağımsız değişkenlerin kombinasyonunu kullanarak bir olayın olasılığını tahmin etmeye çalışır.
Temel amacı, bir şeyin gerçekleşme olasılığını ölçmektir. Örneğin, bir öğrencinin bir sınavı geçip geçmeme olasılığını tahmin etmek veya bir müşterinin bir ürünü satın alıp almama olasılığını belirlemek gibi uygulamalarda kullanılabilir.
Logistic regresyon, sigmoid fonksiyonunu kullanarak tahmin yapar. Bu fonksiyon sayesinde çıktı, 0 ile 1 arasında bir değer alır, bu da olasılığı temsil eder. Eğitim aşamasında, modelin parametreleri (ağırlıklar) veri setine uygun şekilde ayarlanır.
Özetle, logistic regresyon, kategorik bir bağımlı değişkenin olasılığını tahmin etmek için kullanılan bir regresyon tekniğidir.
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)