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:
- Ortalama matematik notu nedir?
- Fen bilimleri notlarının standart sapması nedir?
- Matematik ve fen bilimleri notları arasındaki kovaryans nedir?
- 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
## # 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
## # 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)## # 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
## # 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)## 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$num <- droplevels(train$num)
test$num <- droplevels(test$num)
train$side <- droplevels(train$side)
test$side <- droplevels(test$side)## 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
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
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.
## # 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 <- test %>%
mutate(HomePlanet = ifelse(is.na(HomePlanet) & Destination == "55 Cancri e", "Europa", ifelse(is.na(HomePlanet), "Earth", HomePlanet)))## # 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
## # 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
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.
## # 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$HomePlanet <- as.factor(train$HomePlanet)
train$Destination <- as.factor(train$Destination)
test$HomePlanet <- as.factor(test$HomePlanet)
test$Destination <- as.factor(test$Destination)## 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$VRDecktrain <- 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"))## # 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"))## # 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
## 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
## # 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
## 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.
## # A tibble: 3 × 3
## HomePlanet deck count
## <fct> <fct> <int>
## 1 Earth G 2576
## 2 Europa B 787
## 3 Mars F 1122
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 <- 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.
## # A tibble: 3 × 3
## HomePlanet side count
## <chr> <fct> <int>
## 1 Earth P 2352
## 2 Europa S 1155
## 3 Mars P 900
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 <- 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))))## # 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
## Adding missing grouping variables: `group`
## Adding missing grouping variables: `group`
## # 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
## `mutate_if()` ignored the following grouping variables:
## • Column `group`
## `mutate_if()` ignored the following grouping variables:
## • Column `group`
## 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
## 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