Ekonometri Proje

EN SEVDİĞİM FORMÜL

Lineer Regresyon Modeli Formülü:

\(y = \beta_0 + \beta_1 x + \varepsilon\)

Makine Öğrenmesi

Müşteri Segmentasyonu için Makine Öğrenimi: - Bir perakende şirketi, müşterilerinin alışveriş alışkanlıklarını ve tercihlerini anlamak ve daha iyi pazarlama stratejileri geliştirmek istiyor olabilir. Makine öğrenimi, bu tür veri analizi ve segmentasyon için güçlü bir araç olabilir. Denetimsiz öğrenme tekniklerini kullanarak, şirketin mevcut müşteri veri seti analiz edilebilir. Bu veri seti, müşterilerin satın alma geçmişi, harcama alışkanlıkları, demografik bilgileri gibi çeşitli özellikleri içerebilir. Kümeleme algoritmaları kullanılarak, müşteriler belirli özelliklere göre gruplara ayrılabilir. Örneğin, belirli ürün kategorilerine ilgi gösteren müşteriler bir grupta toplanabilir veya belirli bir coğrafi bölgede yaşayan müşteriler başka bir grupta toplanabilir. Bu segmentasyon sonucunda, şirket farklı müşteri gruplarını daha iyi anlayabilir ve onlara daha uygun pazarlama stratejileri geliştirebilir. Örneğin, belirli bir müşteri grubunun tercih ettiği ürünlerle ilgili özel promosyonlar veya indirimler sunulabilir. Bu şekilde, müşteri memnuniyeti artırılabilir, müşteri sadakati sağlanabilir ve satışlar artırılabilir. Makine öğrenimi, perakende sektöründe müşteri ilişkileri yönetimi (CRM) ve pazarlama stratejilerinin geliştirilmesi gibi birçok alanda değerli bir araçtır.

KAGGLE PROJESİ

Spaceship Titanic

Hoş geldiniz 2912 yılına! Veri bilimi becerilerinizi kullanarak bir kozmik gizemi çözmek için ihtiyaç duyuluyor. Dört ışık yılı uzaklıktan bir ileti aldık ve durum pek iç açıcı değil. Uzay Gemisi Titanic, bir ay önce fırlatılan bir yıldızlar arası yolcu gemisiydi. Yaklaşık 13.000 yolcuyla donatılmış gemi, Güneş sistemimizden üç yakındaki yıldızın etrafında dönen yeni yerleşimli dış gezegenlere göçmen taşıyan ilk seyahatine başlamıştı. İlk hedefi olan ısınmış 55 Cancri E gezegenine doğru yol alırken Alpha Centauri çevresinde dönüş yaparken, dikkatsiz Uzay Gemisi Titanic bir toz bulutunun içinde gizlenmiş bir uzay-zaman anormalliğiyle çarpıştı. Ne yazık ki, gemi ismini aldığı bin yıl önceki kaderiyle benzer bir akıbete uğradı. Gemi sağlam kalsa da, neredeyse yolcuların yarısı alternatif bir boyuta taşındı! Kurtarma ekiplerine yardım etmek ve kayıp yolcuları geri getirmek için, uzay gemisinin hasar görmüş bilgisayar sisteminden kurtarılan kayıtları kullanarak anormalliğin etkilediği yolcuları tahmin etme görevi veriliyor size. Onları kurtarın ve tarihi değiştirin!

ORTALAMA, STANDART SAPMA, KOVARYANS VE KORELASYON

Ortalama (Mean): Bir veri kümesindeki tüm değerlerin toplamının, veri kümesindeki değerlerin sayısına bölünmesiyle elde edilen değerdir. Örneğin, bir sınıftaki öğrencilerin notlarından oluşan bir veri kümesinin ortalaması, tüm öğrenci notlarının toplanıp öğrenci sayısına bölünmesiyle hesaplanır.

Standart Sapma (Standard Deviation): Veri noktalarının ortalama değerden ne kadar uzakta olduğunu gösteren bir ölçüdür. Daha düşük standart sapma, veri noktalarının ortalama değere daha yakın olduğunu gösterirken, daha yüksek standart sapma, veri noktalarının ortalama değere daha dağılmış olduğunu gösterir.

Kovaryans (Covariance): İki değişken arasındaki ilişkinin değişimlerinin birlikte ne kadar olduğunu ölçen bir istatistik ölçüsüdür. Pozitif bir kovaryans, iki değişkenin birlikte arttığını, negatif bir kovaryans ise bir değişken artarken diğerinin azaldığını gösterir.

Korelasyon (Correlation): İki değişken arasındaki ilişkinin gücünü ve yönünü ölçen bir istatistik ölçüsüdür. Korelasyon katsayısı -1 ile +1 arasında bir değer alır. +1, mükemmel bir pozitif korelasyonu, -1 mükemmel bir negatif korelasyonu ve 0 korelasyon olmadığını gösterir. Korelasyon, kovaryansın standart sapmalarla normalize edilmiş halidir, bu nedenle korelasyon, değişkenlerin birbirleriyle olan ilişkisinin gücünü ve yönünü daha iyi karşılaştırmak için kullanılır.

  • Ortalama (Mean): \(\text{Mean} = \frac{\sum_{i=1}^{n} x_i}{n}\)

    Burada, \(x_i\) veri setindeki her bir değeri, \(n\) ise toplam veri sayısını temsil eder.

  • Standart Sapma (Standard Deviation): \(\text{SD} = \sqrt{\frac{\sum_{i=1}^{n} (x_i - \text{Mean})^2}{n}}\)

    Burada, \(\text{Mean}\) ortalama değeri, \(x_i\) veri setindeki her bir değeri, \(n\) ise toplam veri sayısını temsil eder.

  • Kovaryans (Covariance): \(\text{Cov}(X, Y) = \frac{\sum_{i=1}^{n} (x_i - \text{Mean}(X))(y_i - \text{Mean}(Y))}{n}\)

    Burada, \(\text{Mean}(X)\) ve \(\text{Mean}(Y)\) sırasıyla \(X\) ve \(Y\) veri setlerinin ortalamalarını, \(x_i\) ve \(y_i\) ise \(X\) ve \(Y\) veri setlerindeki her bir değeri, \(n\) ise toplam veri sayısını temsil eder.

  • Korelasyon (Correlation): \(\text{Corr}(X, Y) = \frac{\text{Cov}(X, Y)}{\text{SD}(X) \times \text{SD}(Y)}\)

    Burada, \(\text{Cov}(X, Y)\) kovaryansı, \(\text{SD}(X)\) ve \(\text{SD}(Y)\) sırasıyla \(X\) ve \(Y\) veri setlerinin standart sapmalarını temsil eder.

    ÖRNEK Bir okulda öğrencilerin matematik ve fen bilimleri notları aşağıdaki gibidir:

Öğrenci Matematik Notu (x) Fen Bilimleri Notu (y)
1 80 85
2 85 88
3 75 82
4 90 91
5 70 80

Bu verilere göre:

  1. Ortalama matematik notu nedir?
  2. Fen bilimleri notlarının standart sapması nedir?
  3. Matematik ve fen bilimleri notları arasındaki kovaryans nedir?
  4. Matematik ve fen bilimleri notları arasındaki korelasyon katsayısı nedir?

Ortalama Matematik Notu: Matematik notlarının ortalaması:

\[ \bar{x} = \frac{80 + 85 + 75 + 90 + 70}{5} = \frac{400}{5} = 80 \]

Fen Bilimleri Notlarının Standart Sapması: Fen bilimleri notlarının ortalaması:

\[ \bar{y} = \frac{85 + 88 + 82 + 91 + 80}{5} = \frac{426}{5} = 85.2 \]

Ardından, standart sapma formülünü kullanarak standart sapmayı hesaplayalım:

\[ s_y = \sqrt{\frac{(85-85.2)^2 + (88-85.2)^2 + (82-85.2)^2 + (91-85.2)^2 + (80-85.2)^2}{4}} \]

\[ = \sqrt{\frac{0.04 + 6.76 + 11.56 + 37.64 + 30.24}{4}} \]

\[ = \sqrt{\frac{86.24}{4}} \]

\[ = \sqrt{21.56} \]

\[ ≈ 4.64 \]

Yani, fen bilimleri notlarının standart sapması yaklaşık olarak 4.64’tür.

Kovaryans: Matematik ve fen bilimleri notları arasındaki kovaryans:

\[ Cov(x, y) = \frac{(80-80)(85-85.2) + (85-80)(88-85.2) + (75-80)(82-85.2) + (90-80)(91-85.2) + (70-80)(80-85.2)}{4} \]

\[ = \frac{(-0.2)(-0.2) + (5)(2.8) + (-5)(-3.2) + (10)(5.8) + (-10)(-5.2)}{4} \]

\[ = \frac{0.04 + 14 + 16 + 58 + 52}{4} \]

\[ = \frac{140}{4} \]

\[ = 35 \]

Yani, matematik ve fen bilimleri notları arasındaki kovaryans 35’tir.

Korelasyon Katsayısı: Matematik ve fen bilimleri notları arasındaki korelasyon katsayısı:

\[ r = \frac{Cov(x, y)}{s_x \cdot s_y} \]

\[ = \frac{35}{4.64 \cdot 4.64} \]

\[ ≈ \frac{35}{21.56} \]

\[ ≈ 1.62 \]

Yani, matematik ve fen bilimleri notları arasındaki korelasyon katsayısı yaklaşık olarak 1.62’dir.

Train ve Test Set

Veri seti Açıklaması Bu yarışmada göreviniz, Spaceship Titanic’in uzay-zaman anomalisi ile ç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, geminin hasar görmüş bilgisayar sisteminden kurtarılan kişisel kayıtlar kümesi verilmektedir.

Dosya ve Veri Alanı Açıklamaları

train.csv - Eğitim verisi olarak kullanılacak yolcuların yaklaşık üçte ikisi (~8700) için kişisel kayıtlar.

PassengerId - Her yolcu için benzersiz bir kimlik.Her Kimlik gggg_pp şeklinde olup, gggg yolcunun birlikte seyahat ettiği grubu gösterir ve pp, gruptaki sırasını belirtir. Bir gruptaki insanlar genellikle aile üyeleridir, ancak her zaman değildir.

HomePlanet - Yolcunun ayrıldığı gezegen, genellikle kalıcı ikamet ettikleri gezegendir.

CryoSleep - Yolcunun yolculuğun süresi boyunca askıya alınma seçeneğini seçip seçmediğini belirtir. Cryosleep’teki yolcular kabinlerine kapatılmıştır.

Cabin - Yolcunun kaldığı kabin numarası. Yan taraf / num / side şeklinde alınır, burada side, Port için P veya Starboard için S olabilir.

Destination - Yolcunun iniş yapacağı gezegeni belirtir.

Age - Yolcunun yaşı.

VIP - Yolcunun gemideki özel VIP hizmeti için ödeme yapmış olup olmadığını belirtir.

RoomService, FoodCourt, ShoppingMall, Spa, VRDeck - Spaceship Titanic’in birçok lüks olanaklarından her birinde yolcunun ne kadar harcama yaptığı.

Name - Yolcunun adı ve soyadı.

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

test.csv - Kalan üçte birlik (~4300) yolcular için kişisel kayıtlar, test verisi olarak kullanılacaktır. Göreviniz, bu setteki yolcular için Transported değerini tahmin etmektir.

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

PassengerId - Test setindeki her yolcu için bir kimlik.

Transported - Hedef. Her yolcu için True veya False tahmin edin.

ANALİZ KODLARI

library(tidyverse)
library(readr)
train <- read_csv("train.csv")
test <- read_csv("test.csv")
library(rmarkdown)
paged_table(train)
paged_table(test)
library(explore)
train %>% describe_all()
## # A tibble: 14 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA       NA
##  2 HomePlanet   chr     201    2.3      4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Cabin        chr     199    2.3   6561    NA  NA       NA
##  5 Destination  chr     182    2.1      4    NA  NA       NA
##  6 Age          dbl     179    2.1     81     0  28.8     79
##  7 VIP          lgl     203    2.3      3     0   0.02     1
##  8 RoomService  dbl     181    2.1   1274     0 225.   14327
##  9 FoodCourt    dbl     183    2.1   1508     0 458.   29813
## 10 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 11 Spa          dbl     183    2.1   1328     0 311.   22408
## 12 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 13 Name         chr     200    2.3   8474    NA  NA       NA
## 14 Transported  lgl       0    0        2     0   0.5      1
test %>% describe_all()
## # A tibble: 13 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     4277    NA  NA       NA
##  2 HomePlanet   chr      87    2        4    NA  NA       NA
##  3 CryoSleep    lgl      93    2.2      3     0   0.37     1
##  4 Cabin        chr     100    2.3   3266    NA  NA       NA
##  5 Destination  chr      92    2.2      4    NA  NA       NA
##  6 Age          dbl      91    2.1     80     0  28.7     79
##  7 VIP          lgl      93    2.2      3     0   0.02     1
##  8 RoomService  dbl      82    1.9    843     0 219.   11567
##  9 FoodCourt    dbl     106    2.5    903     0 439.   25273
## 10 ShoppingMall dbl      98    2.3    716     0 177.    8292
## 11 Spa          dbl     101    2.4    834     0 303.   19844
## 12 VRDeck       dbl      80    1.9    797     0 311.   22272
## 13 Name         chr      94    2.2   4177    NA  NA       NA
train[c('group' , 'pp')] <- str_split_fixed(train$PassengerId, '_', 2)
test[c('group' , 'pp')] <- str_split_fixed(test$PassengerId, '_', 2)
head(train[, c("PassengerId", "group", "pp")])
## # A tibble: 6 × 3
##   PassengerId group pp   
##   <chr>       <chr> <chr>
## 1 0001_01     0001  01   
## 2 0002_01     0002  01   
## 3 0003_01     0003  01   
## 4 0003_02     0003  02   
## 5 0004_01     0004  01   
## 6 0005_01     0005  01
train$withgroup <- ifelse(duplicated(train$group) | duplicated(train$group, fromLast = TRUE),1,0)
test$withgroup <- ifelse(duplicated(test$group) | duplicated(test$group, fromLast = TRUE),1,0)
head(train[, c("PassengerId", "group", "pp", "withgroup")])
## # A tibble: 6 × 4
##   PassengerId group pp    withgroup
##   <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
train[c('deck', 'num', 'side')] <- str_split_fixed(train$Cabin, '/', 3)
test[c('deck', 'num', 'side')] <- str_split_fixed(test$Cabin, '/', 3)
train <- train %>% mutate_if(is.character, as.factor)
test <- test %>% mutate_if(is.character, as.factor)
summary(train)
##   PassengerId    HomePlanet   CryoSleep           Cabin     
##  0001_01:   1   Earth :4602   Mode :logical   G/734/S:   8  
##  0002_01:   1   Europa:2131   FALSE:5439      B/11/S :   7  
##  0003_01:   1   Mars  :1759   TRUE :3037      B/201/P:   7  
##  0003_02:   1   NA's  : 201   NA's :217       B/82/S :   7  
##  0004_01:   1                                 C/137/S:   7  
##  0005_01:   1                                 (Other):8458  
##  (Other):8687                                 NA's   : 199  
##         Destination        Age           VIP           RoomService     
##  55 Cancri e  :1800   Min.   : 0.00   Mode :logical   Min.   :    0.0  
##  PSO J318.5-22: 796   1st Qu.:19.00   FALSE:8291      1st Qu.:    0.0  
##  TRAPPIST-1e  :5915   Median :27.00   TRUE :199       Median :    0.0  
##  NA's         : 182   Mean   :28.83   NA's :203       Mean   :  224.7  
##                       3rd Qu.:38.00                   3rd Qu.:   47.0  
##                       Max.   :79.00                   Max.   :14327.0  
##                       NA's   :179                     NA's   :181      
##    FoodCourt        ShoppingMall          Spa              VRDeck       
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :    0.0   Median :    0.0   Median :    0.0  
##  Mean   :  458.1   Mean   :  173.7   Mean   :  311.1   Mean   :  304.9  
##  3rd Qu.:   76.0   3rd Qu.:   27.0   3rd Qu.:   59.0   3rd Qu.:   46.0  
##  Max.   :29813.0   Max.   :23492.0   Max.   :22408.0   Max.   :24133.0  
##  NA's   :183       NA's   :208       NA's   :183       NA's   :188      
##                  Name      Transported         group            pp      
##  Alraium Disivering:   2   Mode :logical   0984   :   8   01     :6217  
##  Ankalik Nateansive:   2   FALSE:4315      4005   :   8   02     :1412  
##  Anton Woody       :   2   TRUE :4378      4256   :   8   03     : 571  
##  Apix Wala         :   2                   4498   :   8   04     : 231  
##  Asch Stradick     :   2                   5133   :   8   05     : 128  
##  (Other)           :8483                   5756   :   8   06     :  75  
##  NA's              : 200                   (Other):8645   (Other):  59  
##    withgroup           deck           num       side    
##  Min.   :0.0000   F      :2794          : 199    : 199  
##  1st Qu.:0.0000   G      :2559   82     :  28   P:4206  
##  Median :0.0000   E      : 876   19     :  22   S:4288  
##  Mean   :0.4473   B      : 779   86     :  22           
##  3rd Qu.:1.0000   C      : 747   176    :  21           
##  Max.   :1.0000   (Other): 739   56     :  21           
##                   NA's   : 199   (Other):8380
train[train == ''] <- NA
test[test == ''] <- NA
train$num <- droplevels(train$num)
test$num <- droplevels(test$num)
train$side <- droplevels(train$side)
test$side <- droplevels(test$side)
summary(train)
##   PassengerId    HomePlanet   CryoSleep           Cabin     
##  0001_01:   1   Earth :4602   Mode :logical   G/734/S:   8  
##  0002_01:   1   Europa:2131   FALSE:5439      B/11/S :   7  
##  0003_01:   1   Mars  :1759   TRUE :3037      B/201/P:   7  
##  0003_02:   1   NA's  : 201   NA's :217       B/82/S :   7  
##  0004_01:   1                                 C/137/S:   7  
##  0005_01:   1                                 (Other):8458  
##  (Other):8687                                 NA's   : 199  
##         Destination        Age           VIP           RoomService     
##  55 Cancri e  :1800   Min.   : 0.00   Mode :logical   Min.   :    0.0  
##  PSO J318.5-22: 796   1st Qu.:19.00   FALSE:8291      1st Qu.:    0.0  
##  TRAPPIST-1e  :5915   Median :27.00   TRUE :199       Median :    0.0  
##  NA's         : 182   Mean   :28.83   NA's :203       Mean   :  224.7  
##                       3rd Qu.:38.00                   3rd Qu.:   47.0  
##                       Max.   :79.00                   Max.   :14327.0  
##                       NA's   :179                     NA's   :181      
##    FoodCourt        ShoppingMall          Spa              VRDeck       
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :    0.0   Median :    0.0   Median :    0.0  
##  Mean   :  458.1   Mean   :  173.7   Mean   :  311.1   Mean   :  304.9  
##  3rd Qu.:   76.0   3rd Qu.:   27.0   3rd Qu.:   59.0   3rd Qu.:   46.0  
##  Max.   :29813.0   Max.   :23492.0   Max.   :22408.0   Max.   :24133.0  
##  NA's   :183       NA's   :208       NA's   :183       NA's   :188      
##                  Name      Transported         group            pp      
##  Alraium Disivering:   2   Mode :logical   0984   :   8   01     :6217  
##  Ankalik Nateansive:   2   FALSE:4315      4005   :   8   02     :1412  
##  Anton Woody       :   2   TRUE :4378      4256   :   8   03     : 571  
##  Apix Wala         :   2                   4498   :   8   04     : 231  
##  Asch Stradick     :   2                   5133   :   8   05     : 128  
##  (Other)           :8483                   5756   :   8   06     :  75  
##  NA's              : 200                   (Other):8645   (Other):  59  
##    withgroup           deck           num         side     
##  Min.   :0.0000   F      :2794   82     :  28   P   :4206  
##  1st Qu.:0.0000   G      :2559   19     :  22   S   :4288  
##  Median :0.0000   E      : 876   86     :  22   NA's: 199  
##  Mean   :0.4473   B      : 779   176    :  21              
##  3rd Qu.:1.0000   C      : 747   56     :  21              
##  Max.   :1.0000   (Other): 739   (Other):8380              
##                   NA's   : 199   NA's   : 199
library(explore)
library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
train <- train %>%
  group_by(group) %>%
  mutate(HomePlanet = na.locf(HomePlanet, na.rm = FALSE))
test <- test %>%
  group_by(group) %>%
  mutate(HomePlanet = na.locf(HomePlanet, na.rm = FALSE))
most_frequent_hp <- train %>%
  group_by(Destination, HomePlanet) %>%
  summarize(count = n()) %>%
  arrange(Destination, desc(count)) %>%
  slice(1) %>%
  ungroup()
## `summarise()` has grouped output by 'Destination'. You can override using the
## `.groups` argument.
most_frequent_hp
## # A tibble: 4 × 3
##   Destination   HomePlanet count
##   <fct>         <fct>      <int>
## 1 55 Cancri e   Europa       893
## 2 PSO J318.5-22 Earth        715
## 3 TRAPPIST-1e   Earth       3116
## 4 <NA>          Earth         99
train$HomePlanet <- as.character(train$HomePlanet)
train$Destination <- as.character(train$Destination)
train <- train %>%
  mutate(HomePlanet = ifelse(is.na(HomePlanet) & Destination == "55 Cancri e", "Europa", ifelse(is.na(HomePlanet), "Earth", HomePlanet)))
test$HomePlanet <- as.character(test$HomePlanet)
test$Destination <- as.character(test$Destination)
test <- test %>%
  mutate(HomePlanet = ifelse(is.na(HomePlanet) & Destination == "55 Cancri e", "Europa", ifelse(is.na(HomePlanet), "Earth", HomePlanet)))
train %>% describe_all()
## # A tibble: 20 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  fct       0    0     8693    NA  NA       NA
##  2 HomePlanet   chr       4    0        4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Cabin        fct     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         fct     200    2.3   8474    NA  NA       NA
## 14 Transported  lgl       0    0        2     0   0.5      1
## 15 group        fct       0    0     6217    NA  NA       NA
## 16 pp           fct       0    0        8    NA  NA       NA
## 17 withgroup    dbl       0    0        2     0   0.45     1
## 18 deck         fct     199    2.3      9    NA  NA       NA
## 19 num          fct     199    2.3   1818    NA  NA       NA
## 20 side         fct     199    2.3      3    NA  NA       NA
test %>% 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  fct       0    0     4277    NA  NA       NA
##  2 HomePlanet   chr       0    0        3    NA  NA       NA
##  3 CryoSleep    lgl      93    2.2      3     0   0.37     1
##  4 Cabin        fct     100    2.3   3266    NA  NA       NA
##  5 Destination  chr      92    2.2      4    NA  NA       NA
##  6 Age          dbl      91    2.1     80     0  28.7     79
##  7 VIP          lgl      93    2.2      3     0   0.02     1
##  8 RoomService  dbl      82    1.9    843     0 219.   11567
##  9 FoodCourt    dbl     106    2.5    903     0 439.   25273
## 10 ShoppingMall dbl      98    2.3    716     0 177.    8292
## 11 Spa          dbl     101    2.4    834     0 303.   19844
## 12 VRDeck       dbl      80    1.9    797     0 311.   22272
## 13 Name         fct      94    2.2   4177    NA  NA       NA
## 14 group        fct       0    0     3063    NA  NA       NA
## 15 pp           fct       0    0        8    NA  NA       NA
## 16 withgroup    dbl       0    0        2     0   0.45     1
## 17 deck         fct     100    2.3      9    NA  NA       NA
## 18 num          fct     100    2.3   1506    NA  NA       NA
## 19 side         fct     100    2.3      3    NA  NA       NA
train <- transform(train, HomePlanet = replace(HomePlanet, is.na(HomePlanet), "Earth"))
most_frequent_destinations <- train %>%
  group_by(HomePlanet, Destination) %>%
  summarize(count = n()) %>%
  arrange(HomePlanet, desc(count)) %>%
  slice(1) %>%
  ungroup()
## `summarise()` has grouped output by 'HomePlanet'. You can override using the
## `.groups` argument.
most_frequent_destinations
## # A tibble: 3 × 3
##   HomePlanet Destination count
##   <chr>      <chr>       <int>
## 1 Earth      TRAPPIST-1e  3221
## 2 Europa     TRAPPIST-1e  1204
## 3 Mars       TRAPPIST-1e  1490
train <- transform(train, Destination = replace(Destination, is.na(Destination), "TRAPPIST-1e"))
test <- transform(test, Destination = replace(Destination, is.na(Destination), "TRAPPIST-1e"))
train$HomePlanet <- as.factor(train$HomePlanet)
train$Destination <- as.factor(train$Destination)
test$HomePlanet <- as.factor(test$HomePlanet)
test$Destination <- as.factor(test$Destination)
summary(train)
##   PassengerId    HomePlanet   CryoSleep           Cabin     
##  0001_01:   1   Earth :4743   Mode :logical   G/734/S:   8  
##  0002_01:   1   Europa:2174   FALSE:5439      B/11/S :   7  
##  0003_01:   1   Mars  :1776   TRUE :3037      B/201/P:   7  
##  0003_02:   1                 NA's :217       B/82/S :   7  
##  0004_01:   1                                 C/137/S:   7  
##  0005_01:   1                                 (Other):8458  
##  (Other):8687                                 NA's   : 199  
##         Destination        Age           VIP           RoomService     
##  55 Cancri e  :1800   Min.   : 0.00   Mode :logical   Min.   :    0.0  
##  PSO J318.5-22: 796   1st Qu.:19.00   FALSE:8291      1st Qu.:    0.0  
##  TRAPPIST-1e  :6097   Median :27.00   TRUE :199       Median :    0.0  
##                       Mean   :28.83   NA's :203       Mean   :  224.7  
##                       3rd Qu.:38.00                   3rd Qu.:   47.0  
##                       Max.   :79.00                   Max.   :14327.0  
##                       NA's   :179                     NA's   :181      
##    FoodCourt        ShoppingMall          Spa              VRDeck       
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :    0.0   Median :    0.0   Median :    0.0  
##  Mean   :  458.1   Mean   :  173.7   Mean   :  311.1   Mean   :  304.9  
##  3rd Qu.:   76.0   3rd Qu.:   27.0   3rd Qu.:   59.0   3rd Qu.:   46.0  
##  Max.   :29813.0   Max.   :23492.0   Max.   :22408.0   Max.   :24133.0  
##  NA's   :183       NA's   :208       NA's   :183       NA's   :188      
##                  Name      Transported         group            pp      
##  Alraium Disivering:   2   Mode :logical   0984   :   8   01     :6217  
##  Ankalik Nateansive:   2   FALSE:4315      4005   :   8   02     :1412  
##  Anton Woody       :   2   TRUE :4378      4256   :   8   03     : 571  
##  Apix Wala         :   2                   4498   :   8   04     : 231  
##  Asch Stradick     :   2                   5133   :   8   05     : 128  
##  (Other)           :8483                   5756   :   8   06     :  75  
##  NA's              : 200                   (Other):8645   (Other):  59  
##    withgroup           deck           num         side     
##  Min.   :0.0000   F      :2794   82     :  28   P   :4206  
##  1st Qu.:0.0000   G      :2559   19     :  22   S   :4288  
##  Median :0.0000   E      : 876   86     :  22   NA's: 199  
##  Mean   :0.4473   B      : 779   176    :  21              
##  3rd Qu.:1.0000   C      : 747   56     :  21              
##  Max.   :1.0000   (Other): 739   (Other):8380              
##                   NA's   : 199   NA's   : 199
train <- train %>%
  mutate(RoomService = coalesce(RoomService, 0),
         FoodCourt = coalesce(FoodCourt, 0),
         ShoppingMall = coalesce(ShoppingMall,0),
         Spa = coalesce(Spa, 0),
         VRDeck = coalesce(VRDeck, 0))
test <- test %>%
  mutate(RoomService = coalesce(RoomService, 0),
         FoodCourt = coalesce(FoodCourt, 0),
         ShoppingMall = coalesce(ShoppingMall,0),
         Spa = coalesce(Spa, 0),
         VRDeck = coalesce(VRDeck, 0))
train <- 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$expense <- train$RoomService + train$FoodCourt + train$ShoppingMall + train$Spa + train$VRDeck
test$expense <- test$RoomService + test$FoodCourt + test$ShoppingMall + test$Spa + test$VRDeck
train <- transform(train, CryoSleep = replace(CryoSleep, is.na(CryoSleep) & expense == 0 & Age>12, "FALSE"))
test <- transform(test, CryoSleep = replace(CryoSleep, is.na(CryoSleep) & expense == 0 & Age>12, "FALSE"))
describe_all(train)
## # A tibble: 21 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  fct       0    0     8693    NA  NA       NA
##  2 HomePlanet   fct       0    0        3    NA  NA       NA
##  3 CryoSleep    chr     142    1.6      3    NA  NA       NA
##  4 Cabin        fct     199    2.3   6561    NA  NA       NA
##  5 Destination  fct       0    0        3    NA  NA       NA
##  6 Age          dbl       0    0       88     0  28.8     79
##  7 VIP          lgl     203    2.3      3     0   0.02     1
##  8 RoomService  dbl       0    0     1273     0 220.   14327
##  9 FoodCourt    dbl       0    0     1507     0 448.   29813
## 10 ShoppingMall dbl       0    0     1115     0 170.   23492
## # ℹ 11 more rows
train <- transform(train, CryoSleep = replace(CryoSleep, is.na(CryoSleep) & expense == 0 & Age>12, "TRUE"))
test <- transform(test, CryoSleep = replace(CryoSleep, is.na(CryoSleep) & expense == 0 & Age>12, "TRUE"))
train <- transform(train, CryoSleep = replace(CryoSleep, is.na(CryoSleep), "FALSE"))
test <- transform(test, CryoSleep = replace(CryoSleep, is.na(CryoSleep), "FALSE"))
describe_all(train)
## # A tibble: 21 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  fct       0    0     8693    NA  NA       NA
##  2 HomePlanet   fct       0    0        3    NA  NA       NA
##  3 CryoSleep    chr       0    0        2    NA  NA       NA
##  4 Cabin        fct     199    2.3   6561    NA  NA       NA
##  5 Destination  fct       0    0        3    NA  NA       NA
##  6 Age          dbl       0    0       88     0  28.8     79
##  7 VIP          lgl     203    2.3      3     0   0.02     1
##  8 RoomService  dbl       0    0     1273     0 220.   14327
##  9 FoodCourt    dbl       0    0     1507     0 448.   29813
## 10 ShoppingMall dbl       0    0     1115     0 170.   23492
## # ℹ 11 more rows
train$CryoSleep <- as.factor(train$CryoSleep)
test$CryoSleep <- as.factor(test$CryoSleep)
summary(train)
##   PassengerId    HomePlanet   CryoSleep        Cabin             Destination  
##  0001_01:   1   Earth :4743   FALSE:5656   G/734/S:   8   55 Cancri e  :1800  
##  0002_01:   1   Europa:2174   TRUE :3037   B/11/S :   7   PSO J318.5-22: 796  
##  0003_01:   1   Mars  :1776                B/201/P:   7   TRAPPIST-1e  :6097  
##  0003_02:   1                              B/82/S :   7                       
##  0004_01:   1                              C/137/S:   7                       
##  0005_01:   1                              (Other):8458                       
##  (Other):8687                              NA's   : 199                       
##       Age           VIP           RoomService      FoodCourt      
##  Min.   : 0.00   Mode :logical   Min.   :    0   Min.   :    0.0  
##  1st Qu.:20.00   FALSE:8291      1st Qu.:    0   1st Qu.:    0.0  
##  Median :27.00   TRUE :199       Median :    0   Median :    0.0  
##  Mean   :28.84   NA's :203       Mean   :  220   Mean   :  448.4  
##  3rd Qu.:37.00                   3rd Qu.:   41   3rd Qu.:   61.0  
##  Max.   :79.00                   Max.   :14327   Max.   :29813.0  
##                                                                   
##   ShoppingMall          Spa              VRDeck       
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :    0.0   Median :    0.0  
##  Mean   :  169.6   Mean   :  304.6   Mean   :  298.3  
##  3rd Qu.:   22.0   3rd Qu.:   53.0   3rd Qu.:   40.0  
##  Max.   :23492.0   Max.   :22408.0   Max.   :24133.0  
##                                                       
##                  Name      Transported         group            pp      
##  Alraium Disivering:   2   Mode :logical   0984   :   8   01     :6217  
##  Ankalik Nateansive:   2   FALSE:4315      4005   :   8   02     :1412  
##  Anton Woody       :   2   TRUE :4378      4256   :   8   03     : 571  
##  Apix Wala         :   2                   4498   :   8   04     : 231  
##  Asch Stradick     :   2                   5133   :   8   05     : 128  
##  (Other)           :8483                   5756   :   8   06     :  75  
##  NA's              : 200                   (Other):8645   (Other):  59  
##    withgroup           deck           num         side         expense     
##  Min.   :0.0000   F      :2794   82     :  28   P   :4206   Min.   :    0  
##  1st Qu.:0.0000   G      :2559   19     :  22   S   :4288   1st Qu.:    0  
##  Median :0.0000   E      : 876   86     :  22   NA's: 199   Median :  716  
##  Mean   :0.4473   B      : 779   176    :  21               Mean   : 1441  
##  3rd Qu.:1.0000   C      : 747   56     :  21               3rd Qu.: 1441  
##  Max.   :1.0000   (Other): 739   (Other):8380               Max.   :35987  
##                   NA's   : 199   NA's   : 199
train <- transform(train, VIP = replace(VIP, is.na(VIP), FALSE))
test <- transform(test, VIP = replace(VIP, is.na(VIP), FALSE))
train %>% describe_all()
## # A tibble: 21 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  fct       0    0     8693    NA  NA       NA
##  2 HomePlanet   fct       0    0        3    NA  NA       NA
##  3 CryoSleep    fct       0    0        2    NA  NA       NA
##  4 Cabin        fct     199    2.3   6561    NA  NA       NA
##  5 Destination  fct       0    0        3    NA  NA       NA
##  6 Age          dbl       0    0       88     0  28.8     79
##  7 VIP          lgl       0    0        2     0   0.02     1
##  8 RoomService  dbl       0    0     1273     0 220.   14327
##  9 FoodCourt    dbl       0    0     1507     0 448.   29813
## 10 ShoppingMall dbl       0    0     1115     0 170.   23492
## # ℹ 11 more rows
train <- train %>%
  group_by(group) %>%
  mutate(deck = na.locf(deck, na.rm = FALSE))
test <- test %>%
  group_by(group) %>%
  mutate(deck = na.locf(deck, na.rm = FALSE))
train <- train %>%
  group_by(group) %>%
  mutate(side = na.locf(side, na.rm = FALSE))
test <- test %>%
  group_by(group) %>%
  mutate(side = na.locf(side, na.rm = FALSE))
summary(train)
##   PassengerId    HomePlanet   CryoSleep        Cabin             Destination  
##  0001_01:   1   Earth :4743   FALSE:5656   G/734/S:   8   55 Cancri e  :1800  
##  0002_01:   1   Europa:2174   TRUE :3037   B/11/S :   7   PSO J318.5-22: 796  
##  0003_01:   1   Mars  :1776                B/201/P:   7   TRAPPIST-1e  :6097  
##  0003_02:   1                              B/82/S :   7                       
##  0004_01:   1                              C/137/S:   7                       
##  0005_01:   1                              (Other):8458                       
##  (Other):8687                              NA's   : 199                       
##       Age           VIP           RoomService      FoodCourt      
##  Min.   : 0.00   Mode :logical   Min.   :    0   Min.   :    0.0  
##  1st Qu.:20.00   FALSE:8494      1st Qu.:    0   1st Qu.:    0.0  
##  Median :27.00   TRUE :199       Median :    0   Median :    0.0  
##  Mean   :28.84                   Mean   :  220   Mean   :  448.4  
##  3rd Qu.:37.00                   3rd Qu.:   41   3rd Qu.:   61.0  
##  Max.   :79.00                   Max.   :14327   Max.   :29813.0  
##                                                                   
##   ShoppingMall          Spa              VRDeck       
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :    0.0   Median :    0.0  
##  Mean   :  169.6   Mean   :  304.6   Mean   :  298.3  
##  3rd Qu.:   22.0   3rd Qu.:   53.0   3rd Qu.:   40.0  
##  Max.   :23492.0   Max.   :22408.0   Max.   :24133.0  
##                                                       
##                  Name      Transported         group            pp      
##  Alraium Disivering:   2   Mode :logical   0984   :   8   01     :6217  
##  Ankalik Nateansive:   2   FALSE:4315      4005   :   8   02     :1412  
##  Anton Woody       :   2   TRUE :4378      4256   :   8   03     : 571  
##  Apix Wala         :   2                   4498   :   8   04     : 231  
##  Asch Stradick     :   2                   5133   :   8   05     : 128  
##  (Other)           :8483                   5756   :   8   06     :  75  
##  NA's              : 200                   (Other):8645   (Other):  59  
##    withgroup           deck           num         side         expense     
##  Min.   :0.0000   F      :2801   82     :  28   P   :4236   Min.   :    0  
##  1st Qu.:0.0000   G      :2580   19     :  22   S   :4323   1st Qu.:    0  
##  Median :0.0000   E      : 881   86     :  22   NA's: 134   Median :  716  
##  Mean   :0.4473   B      : 790   176    :  21               Mean   : 1441  
##  3rd Qu.:1.0000   C      : 758   56     :  21               3rd Qu.: 1441  
##  Max.   :1.0000   (Other): 749   (Other):8380               Max.   :35987  
##                   NA's   : 134   NA's   : 199
most_frequent_deck <- train %>%
  group_by(HomePlanet, deck) %>%
  summarize(count = n()) %>%
  arrange(HomePlanet, desc(count)) %>%
  slice(1) %>%
  ungroup()
## `summarise()` has grouped output by 'HomePlanet'. You can override using the
## `.groups` argument.
most_frequent_deck
## # A tibble: 3 × 3
##   HomePlanet deck  count
##   <fct>      <fct> <int>
## 1 Earth      G      2576
## 2 Europa     B       787
## 3 Mars       F      1122
train$HomePlanet <- as.character(train$HomePlanet)
train$deck <- as.character(train$deck)
train <- train %>%
  mutate(deck = ifelse(is.na(deck) & HomePlanet == "Earth", "G", 
                       ifelse(is.na(deck) & HomePlanet == "Europa", "B",
                               ifelse(is.na(deck) & HomePlanet == "Mars", "F", deck))))
test$HomePlanet <- as.character(test$HomePlanet)
test$deck <- as.character(test$deck)
test <- test %>%
  mutate(deck = ifelse(is.na(deck) & HomePlanet == "Earth", "G", 
                       ifelse(is.na(deck) & HomePlanet == "Europa", "B",
                               ifelse(is.na(deck) & HomePlanet == "Mars", "F", deck))))
most_frequent_side <- train %>%
  group_by(HomePlanet, side) %>%
  summarize(count = n()) %>%
  arrange(HomePlanet, desc(count)) %>%
  slice(1) %>%
  ungroup()
## `summarise()` has grouped output by 'HomePlanet'. You can override using the
## `.groups` argument.
most_frequent_side
## # A tibble: 3 × 3
##   HomePlanet side  count
##   <chr>      <fct> <int>
## 1 Earth      P      2352
## 2 Europa     S      1155
## 3 Mars       P       900
train$side <- as.character(train$side)
train <- train %>%
  mutate(side = ifelse(is.na(side) & HomePlanet == "Earth", "P", 
                       ifelse(is.na(side) & HomePlanet == "Europa", "S",
                               ifelse(is.na(side) & HomePlanet == "Mars", "P", side))))
test$side <- as.character(test$side)
test <- test %>%
  mutate(side = ifelse(is.na(side) & HomePlanet == "Earth", "P", 
                       ifelse(is.na(side) & HomePlanet == "Europa", "S",
                               ifelse(is.na(side) & HomePlanet == "Mars", "P", side))))
train %>% describe_all()
## # A tibble: 21 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  fct       0    0     8693    NA  NA       NA
##  2 HomePlanet   chr       0    0        3    NA  NA       NA
##  3 CryoSleep    fct       0    0        2    NA  NA       NA
##  4 Cabin        fct     199    2.3   6561    NA  NA       NA
##  5 Destination  fct       0    0        3    NA  NA       NA
##  6 Age          dbl       0    0       88     0  28.8     79
##  7 VIP          lgl       0    0        2     0   0.02     1
##  8 RoomService  dbl       0    0     1273     0 220.   14327
##  9 FoodCourt    dbl       0    0     1507     0 448.   29813
## 10 ShoppingMall dbl       0    0     1115     0 170.   23492
## # ℹ 11 more rows
train <- train %>% select(-c("Cabin", "Name", "group", "pp", "num"))
## Adding missing grouping variables: `group`
test <- test %>% select(-c("Cabin", "Name", "group", "pp", "num"))
## Adding missing grouping variables: `group`
describe_all(train)
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min    mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>   <dbl> <dbl>
##  1 group        fct       0      0   6217    NA   NA       NA
##  2 PassengerId  fct       0      0   8693    NA   NA       NA
##  3 HomePlanet   chr       0      0      3    NA   NA       NA
##  4 CryoSleep    fct       0      0      2    NA   NA       NA
##  5 Destination  fct       0      0      3    NA   NA       NA
##  6 Age          dbl       0      0     88     0   28.8     79
##  7 VIP          lgl       0      0      2     0    0.02     1
##  8 RoomService  dbl       0      0   1273     0  220.   14327
##  9 FoodCourt    dbl       0      0   1507     0  448.   29813
## 10 ShoppingMall dbl       0      0   1115     0  170.   23492
## 11 Spa          dbl       0      0   1327     0  305.   22408
## 12 VRDeck       dbl       0      0   1306     0  298.   24133
## 13 Transported  lgl       0      0      2     0    0.5      1
## 14 withgroup    dbl       0      0      2     0    0.45     1
## 15 deck         chr       0      0      8    NA   NA       NA
## 16 side         chr       0      0      2    NA   NA       NA
## 17 expense      dbl       0      0   2336     0 1441.   35987
train <- train %>% mutate_if(is.character, as.factor)
## `mutate_if()` ignored the following grouping variables:
## • Column `group`
test <- test %>% mutate_if(is.character, as.factor)
## `mutate_if()` ignored the following grouping variables:
## • Column `group`
train$PassengerId <- as.character(train$PassengerId)
test$PassengerId <- as.character(test$PassengerId)
summary(train)
##      group      PassengerId         HomePlanet   CryoSleep   
##  0984   :   8   Length:8693        Europa:2174   FALSE:5656  
##  4005   :   8   Class :character   Earth :4743   TRUE :3037  
##  4256   :   8   Mode  :character   Mars  :1776               
##  4498   :   8                                                
##  5133   :   8                                                
##  5756   :   8                                                
##  (Other):8645                                                
##         Destination        Age           VIP           RoomService   
##  55 Cancri e  :1800   Min.   : 0.00   Mode :logical   Min.   :    0  
##  PSO J318.5-22: 796   1st Qu.:20.00   FALSE:8494      1st Qu.:    0  
##  TRAPPIST-1e  :6097   Median :27.00   TRUE :199       Median :    0  
##                       Mean   :28.84                   Mean   :  220  
##                       3rd Qu.:37.00                   3rd Qu.:   41  
##                       Max.   :79.00                   Max.   :14327  
##                                                                      
##    FoodCourt        ShoppingMall          Spa              VRDeck       
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :    0.0   Median :    0.0   Median :    0.0  
##  Mean   :  448.4   Mean   :  169.6   Mean   :  304.6   Mean   :  298.3  
##  3rd Qu.:   61.0   3rd Qu.:   22.0   3rd Qu.:   53.0   3rd Qu.:   40.0  
##  Max.   :29813.0   Max.   :23492.0   Max.   :22408.0   Max.   :24133.0  
##                                                                         
##  Transported       withgroup           deck      side        expense     
##  Mode :logical   Min.   :0.0000   F      :2832   P:4335   Min.   :    0  
##  FALSE:4315      1st Qu.:0.0000   G      :2648   S:4358   1st Qu.:    0  
##  TRUE :4378      Median :0.0000   E      : 881            Median :  716  
##                  Mean   :0.4473   B      : 825            Mean   : 1441  
##                  3rd Qu.:1.0000   C      : 758            3rd Qu.: 1441  
##                  Max.   :1.0000   D      : 483            Max.   :35987  
##                                   (Other): 266
summary(test)
##      group      PassengerId         HomePlanet   CryoSleep   
##  0339   :   8   Length:4277        Earth :2317   FALSE:2733  
##  1072   :   8   Class :character   Europa:1026   TRUE :1544  
##  6332   :   8   Mode  :character   Mars  : 934               
##  6499   :   8                                                
##  6986   :   8                                                
##  8543   :   8                                                
##  (Other):4229                                                
##         Destination        Age           VIP           RoomService     
##  55 Cancri e  : 841   Min.   : 0.00   Mode :logical   Min.   :    0.0  
##  PSO J318.5-22: 388   1st Qu.:20.00   FALSE:4203      1st Qu.:    0.0  
##  TRAPPIST-1e  :3048   Median :26.20   TRUE :74        Median :    0.0  
##                       Mean   :28.66                   Mean   :  215.1  
##                       3rd Qu.:37.00                   3rd Qu.:   48.0  
##                       Max.   :79.00                   Max.   :11567.0  
##                                                                        
##    FoodCourt        ShoppingMall         Spa              VRDeck       
##  Min.   :    0.0   Min.   :   0.0   Min.   :    0.0   Min.   :    0.0  
##  1st Qu.:    0.0   1st Qu.:   0.0   1st Qu.:    0.0   1st Qu.:    0.0  
##  Median :    0.0   Median :   0.0   Median :    0.0   Median :    0.0  
##  Mean   :  428.6   Mean   : 173.2   Mean   :  295.9   Mean   :  304.9  
##  3rd Qu.:   66.0   3rd Qu.:  27.0   3rd Qu.:   43.0   3rd Qu.:   31.0  
##  Max.   :25273.0   Max.   :8292.0   Max.   :19844.0   Max.   :22272.0  
##                                                                        
##    withgroup           deck      side        expense     
##  Min.   :0.0000   F      :1466   S:2119   Min.   :    0  
##  1st Qu.:0.0000   G      :1279   P:2158   1st Qu.:    0  
##  Median :0.0000   E      : 450            Median :  714  
##  Mean   :0.4529   B      : 376            Mean   : 1418  
##  3rd Qu.:1.0000   C      : 359            3rd Qu.: 1444  
##  Max.   :1.0000   D      : 243            Max.   :33666  
##                   (Other): 104
train$group <- NULL
test$group <- NULL
write.csv(train, "train_c.csv", row.names = FALSE)
write.csv(test, "test_c.csv", row.names = FALSE)