library(readr)
train <- read_csv("train.csv")
library(readr)
test <- read_csv("test.csv")
library(tidyverse)
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
##train ve test için ailesıra ve ailenum ekleyeceğim.
train[c("ailenum", "ailesira")] <- str_split_fixed(train$PassengerId, "_", 2)
test[c("ailenum", "ailesira")] <- str_split_fixed(test$PassengerId, "_", 2)
##şimdi cabin de üç ayıralım train için ve bakalım nasıl bir sonç verir
train[c('deck', 'num', 'side')] <- str_split_fixed(train$Cabin, '/', 3)
test[c('deck', 'num', 'side')] <- str_split_fixed(test$Cabin, '/', 3)
#şimdi train ve test eğer her bir boşluk varsa na ile doldumanı isteyeceğim.
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
##şimdi cabin ıhtıyacımız yok train ve testten sileceğim.
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
##yukardaki çıkan soruç leveller deniyor. 3 tane level var ve bir tane na , bu na çözmemiz lazım yanı bir mantığı olmalı.
levels(train$HomePlanet)
## NULL
##şimdi train ve testte addNA yapalım ki leveller göstermek için.
train$HomePlanet <- addNA(train$HomePlanet)
test$HomePlanet <- addNA(test$HomePlanet)
levels(train$HomePlanet)
## [1] "Earth" "Europa" "Mars" NA
##şimdi na tirnak içinde olusun yapalım, ve leveller eğer boşsa yerine tirnak içinde na olsun
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) %>%
mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))
test <- test %>%
group_by(HomePlanet) %>%
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 84 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 84 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
veri setindeki belirli bir sütundaki benzersiz değerleri listeleyerek, o sütundaki farklı kategorileri görmemize sağlar.
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 84 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 84 0 28.8 79
## 6 VIP lgl 203 2.3 3 0 0.02 1
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
train$VIP <- addNA(train$VIP)
test$VIP <- addNA(test$VIP)
levels(train$VIP)[is.na(levels(train$VIP))] <- "NA"
levels(test$VIP)[is.na(levels(test$VIP))] <- "NA"
train %>% describe_all()
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
group by destinatiön göre roomservice ile
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 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
hist(train$FoodCourt)
hist(train$Age)
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 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
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 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Name chr 200 2.3 8474 NA NA NA
## 13 Transported lgl 0 0 2 0 0.5 1
## 14 ailenum chr 0 0 6217 NA NA NA
## 15 ailesira chr 0 0 8 NA NA NA
## 16 deck chr 199 2.3 9 NA NA NA
## 17 num chr 199 2.3 1818 NA NA NA
## 18 side fct 0 0 3 NA NA NA
train <- train %>% select(-Name)
test <- test %>% select(-Name)
train %>% describe_all()
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 ailenum chr 0 0 6217 NA NA NA
## 14 ailesira chr 0 0 8 NA NA NA
## 15 deck chr 199 2.3 9 NA NA NA
## 16 num chr 199 2.3 1818 NA NA NA
## 17 side fct 0 0 3 NA NA NA
train$deck <- addNA(train$deck)
test$deck <- addNA(test$deck)
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 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 ailenum chr 0 0 6217 NA NA NA
## 14 ailesira chr 0 0 8 NA NA NA
## 15 deck fct 0 0 9 NA NA NA
## 16 num chr 199 2.3 1818 NA NA NA
## 17 side fct 0 0 3 NA NA NA
train$num <- addNA(train$num)
test$num <- addNA(test$num)
levels(train$num)[is.na(levels(train$num))] <- "NA"
levels(test$num)[is.na(levels(test$num))] <- "NA"
train %>% describe_all()
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 PassengerId chr 0 0 8693 NA NA NA
## 2 HomePlanet fct 0 0 4 NA NA NA
## 3 CryoSleep fct 0 0 3 NA NA NA
## 4 Destination fct 0 0 4 NA NA NA
## 5 Age dbl 0 0 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 ailenum chr 0 0 6217 NA NA NA
## 14 ailesira chr 0 0 8 NA NA NA
## 15 deck fct 0 0 9 NA NA NA
## 16 num fct 0 0 1818 NA NA NA
## 17 side fct 0 0 3 NA NA NA
train$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)
##ilk 10 gözlemler gösterelım.
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
aile numara ve sira ve num sileceğim.
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 84 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 0 0 1277 0 225. 14327
## 8 FoodCourt dbl 0 0 1507 0 448. 29813
## 9 ShoppingMall dbl 0 0 1115 0 170. 23492
## 10 Spa dbl 0 0 1327 0 305. 22408
## 11 VRDeck dbl 0 0 1306 0 298. 24133
## 12 Transported lgl 0 0 2 0 0.5 1
## 13 deck fct 0 0 9 NA NA NA
## 14 side fct 0 0 3 NA NA NA
## 15 aile dbl 0 0 2 0 0.45 1
Lojistic Regresyon.
train_set <- train[2:15]
test_set <- test[2:14]
library(caTools)
set.seed(123)
split = sample.split(train_set$Transported, SplitRatio = 0.75)
training_set = subset(train_set, split == TRUE)
testing_set = subset(train_set, split == FALSE)
logistic = glm(formula = Transported ~ ., family = binomial,data = training_set)
prob_pred = predict(logistic, type = 'response' ,newdata = testing_set[-11])
y_pred = ifelse(prob_pred > 0.5, 1,0)
y_true= ifelse(testing_set[11] == TRUE, 1,0)
burada gerçekler ile tahminler karşılaşacağim
cm = table(y_true, y_pred)
cm
## y_pred
## y_true 0 1
## 0 819 260
## 1 189 905
(819 + 905)/(2173)
## [1] 0.7933732
##sonuç olarak boyle bir logistic regresyon tahmin çıkartı.
##Bu sefer bütün train_set içinde yapacağim, bütün dataya tahmin ederim.
logistic_son = glm(formula = Transported ~ ., family = binomial, data = train_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
prob_pred <- predict(logistic_son, type = 'response', newdata = test_set)
y_pred <- ifelse(prob_pred > 0.5, 1, 0)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <- as.vector(Transported)
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
library(stringr)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_logistic.csv" , row.names = FALSE, quote = FALSE)
NAİVE BAYES.
library(e1071)
fit_nb <- naiveBayes(Transported ~ ., data = training_set)
preds <- predict(fit_nb, newdata =testing_set[-11], type ="raw") %>% data.frame()
y_pred = ifelse(preds$TRUE. > 0.5, 1, 0)
cm = table(y_true, y_pred)
cm
## y_pred
## y_true 0 1
## 0 510 569
## 1 78 1016
(510 + 1016)/(2173)
## [1] 0.7022549
şimdi bütün datayı kullanalım ve bakalım ne verecek.
nb_son = naiveBayes(Transported ~ ., data = train_set)
perd <- predict(nb_son, newdata = test_set, type = "raw") %>% data.frame()
y_pred = ifelse(preds$TRUE. > 0.5, TRUE, FALSE)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <- as.vector(Transported)
submission <- cbind(PassengerId, Transported)
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 2)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_nb.csv" , row.names = FALSE, quote = FALSE)
svm
svm_ker_son = svm(Transported ~ ., data = train_set,
type = 'C-classification',
kernel = 'radial')
preds <- predict(svm_ker_son, newdata = train_set, type = "raw") %>%
data.frame()
y_pred =preds$.
Transported <- as.character(y_pred)
PassengerId <- train$PassengerId
Transported <- as.vector(Transported)
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_kernel.cvs" , row.names = FALSE, quote = FALSE)
library(rpart)
library(rpart.plot)
library(randomForest)
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
##
## Attaching package: 'randomForest'
## The following object is masked from 'package:dplyr':
##
## combine
## The following object is masked from 'package:ggplot2':
##
## margin
training_set$Transported <- as.factor(training_set$Transported )
testing_set$Transported <- as.factor(testing_set$Transported )
train_set$Transported <- as.factor(train_set$Transported )
fit_tree <- rpart(Transported ~ ., data = training_set)
summary(fit_tree)
## Call:
## rpart(formula = Transported ~ ., data = training_set)
## n= 6520
##
## CP nsplit rel error xerror xstd
## 1 0.43016069 0 1.0000000 1.0000000 0.01247595
## 2 0.03574372 1 0.5698393 0.5698393 0.01123791
## 3 0.01000000 4 0.4626082 0.4663164 0.01052385
##
## Variable importance
## CryoSleep Spa VRDeck RoomService FoodCourt ShoppingMall
## 43 16 15 12 7 4
## HomePlanet deck
## 2 1
##
## Node number 1: 6520 observations, complexity param=0.4301607
## predicted class=TRUE expected loss=0.496319 P(node) =1
## class counts: 3236 3284
## probabilities: 0.496 0.504
## left son=2 (4240 obs) right son=3 (2280 obs)
## Primary splits:
## CryoSleep splits as LRL, improve=683.0583, (0 missing)
## RoomService < 0.5 to the right, improve=412.4664, (0 missing)
## Spa < 0.5 to the right, improve=372.3306, (0 missing)
## VRDeck < 0.5 to the right, improve=353.3889, (0 missing)
## ShoppingMall < 0.5 to the right, improve=228.9794, (0 missing)
## Surrogate splits:
## Spa < 0.5 to the right, agree=0.716, adj=0.188, (0 split)
## FoodCourt < 0.5 to the right, agree=0.702, adj=0.148, (0 split)
## VRDeck < 0.5 to the right, agree=0.700, adj=0.141, (0 split)
## RoomService < 0.5 to the right, agree=0.696, adj=0.130, (0 split)
## ShoppingMall < 0.5 to the right, agree=0.686, adj=0.101, (0 split)
##
## Node number 2: 4240 observations, complexity param=0.03574372
## predicted class=FALSE expected loss=0.3358491 P(node) =0.6503067
## class counts: 2816 1424
## probabilities: 0.664 0.336
## left son=4 (1087 obs) right son=5 (3153 obs)
## Primary splits:
## RoomService < 343 to the right, improve=104.04900, (0 missing)
## Age < 12.5 to the right, improve= 87.14388, (0 missing)
## Spa < 241.5 to the right, improve= 84.79330, (0 missing)
## FoodCourt < 2168 to the left, improve= 67.12339, (0 missing)
## VRDeck < 420.5 to the right, improve= 58.17805, (0 missing)
## Surrogate splits:
## HomePlanet splits as RRLR, agree=0.788, adj=0.175, (0 split)
## deck splits as RRRLRRRRR, agree=0.748, adj=0.016, (0 split)
## Age < 78.5 to the right, agree=0.744, adj=0.002, (0 split)
##
## Node number 3: 2280 observations
## predicted class=TRUE expected loss=0.1842105 P(node) =0.3496933
## class counts: 420 1860
## probabilities: 0.184 0.816
##
## Node number 4: 1087 observations
## predicted class=FALSE expected loss=0.1471941 P(node) =0.1667178
## class counts: 927 160
## probabilities: 0.853 0.147
##
## Node number 5: 3153 observations, complexity param=0.03574372
## predicted class=FALSE expected loss=0.400888 P(node) =0.483589
## class counts: 1889 1264
## probabilities: 0.599 0.401
## left son=10 (1034 obs) right son=11 (2119 obs)
## Primary splits:
## Spa < 205 to the right, improve=131.21170, (0 missing)
## VRDeck < 135.5 to the right, improve=103.53150, (0 missing)
## Age < 12.5 to the right, improve= 60.28573, (0 missing)
## ShoppingMall < 790.5 to the left, improve= 45.61195, (0 missing)
## FoodCourt < 2200.5 to the left, improve= 45.01959, (0 missing)
## Surrogate splits:
## HomePlanet splits as RLRR, agree=0.699, adj=0.081, (0 split)
## deck splits as LRLRRRRLR, agree=0.687, adj=0.044, (0 split)
## VRDeck < 2794.5 to the right, agree=0.676, adj=0.014, (0 split)
## FoodCourt < 3197.5 to the right, agree=0.676, adj=0.012, (0 split)
## Age < 59.5 to the right, agree=0.673, adj=0.002, (0 split)
##
## Node number 10: 1034 observations
## predicted class=FALSE expected loss=0.1943907 P(node) =0.158589
## class counts: 833 201
## probabilities: 0.806 0.194
##
## Node number 11: 2119 observations, complexity param=0.03574372
## predicted class=TRUE expected loss=0.4983483 P(node) =0.325
## class counts: 1056 1063
## probabilities: 0.498 0.502
## left son=22 (604 obs) right son=23 (1515 obs)
## Primary splits:
## VRDeck < 363.5 to the right, improve=135.42270, (0 missing)
## FoodCourt < 2071 to the left, improve= 50.37469, (0 missing)
## HomePlanet splits as LRRL, improve= 40.97469, (0 missing)
## ShoppingMall < 1540.5 to the left, improve= 31.65683, (0 missing)
## Age < 10.5 to the right, improve= 29.32195, (0 missing)
## Surrogate splits:
## FoodCourt < 7197.5 to the right, agree=0.717, adj=0.008, (0 split)
## deck splits as RRLRRRRRR, agree=0.716, adj=0.003, (0 split)
## Age < 68.5 to the right, agree=0.715, adj=0.002, (0 split)
##
## Node number 22: 604 observations
## predicted class=FALSE expected loss=0.218543 P(node) =0.09263804
## class counts: 472 132
## probabilities: 0.781 0.219
##
## Node number 23: 1515 observations
## predicted class=TRUE expected loss=0.3854785 P(node) =0.232362
## class counts: 584 931
## probabilities: 0.385 0.615
rpart.plot(fit_tree)
preds = predict(fit_tree, newdata = testing_set[-11] , type = "class")
y_pred = ifelse(preds == TRUE, 1, 0)
cm =table(y_true, y_pred)
cm
## y_pred
## y_true 0 1
## 0 735 344
## 1 170 924
(735+924)/(2173)
## [1] 0.7634607
şimdi hepsi yapalım.
fit_tree <- rpart::rpart(Transported ~ ., data = train_set)
summary(fit_tree)
## Call:
## rpart::rpart(formula = Transported ~ ., data = train_set)
## n= 8693
##
## CP nsplit rel error xerror xstd
## 1 0.43244496 0 1.0000000 1.0000000 0.010803454
## 2 0.03406721 1 0.5675550 0.5675550 0.009719864
## 3 0.01000000 4 0.4653534 0.4690614 0.009132086
##
## Variable importance
## CryoSleep Spa VRDeck RoomService FoodCourt ShoppingMall
## 45 17 15 11 7 4
## HomePlanet
## 1
##
## Node number 1: 8693 observations, complexity param=0.432445
## predicted class=TRUE expected loss=0.4963764 P(node) =1
## class counts: 4315 4378
## probabilities: 0.496 0.504
## left son=2 (5656 obs) right son=3 (3037 obs)
## Primary splits:
## CryoSleep splits as LRL, improve=920.2004, (0 missing)
## RoomService < 0.5 to the right, improve=523.3930, (0 missing)
## Spa < 0.5 to the right, improve=514.4709, (0 missing)
## VRDeck < 0.5 to the right, improve=479.5694, (0 missing)
## ShoppingMall < 0.5 to the right, improve=302.4414, (0 missing)
## Surrogate splits:
## Spa < 0.5 to the right, agree=0.716, adj=0.187, (0 split)
## FoodCourt < 0.5 to the right, agree=0.701, adj=0.143, (0 split)
## VRDeck < 0.5 to the right, agree=0.696, adj=0.129, (0 split)
## RoomService < 0.5 to the right, agree=0.692, adj=0.119, (0 split)
## ShoppingMall < 0.5 to the right, agree=0.683, adj=0.092, (0 split)
##
## Node number 2: 5656 observations, complexity param=0.03406721
## predicted class=FALSE expected loss=0.3350424 P(node) =0.6506384
## class counts: 3761 1895
## probabilities: 0.665 0.335
## left son=4 (1432 obs) right son=5 (4224 obs)
## Primary splits:
## RoomService < 346.5 to the right, improve=121.39640, (0 missing)
## Spa < 266.5 to the right, improve=113.99320, (0 missing)
## Age < 12.5 to the right, improve=109.40550, (0 missing)
## FoodCourt < 1331 to the left, improve= 98.11980, (0 missing)
## VRDeck < 417.5 to the right, improve= 75.47684, (0 missing)
## Surrogate splits:
## HomePlanet splits as RRLR, agree=0.785, adj=0.151, (0 split)
## deck splits as RRRLRRRRR, agree=0.749, adj=0.007, (0 split)
## Age < 78.5 to the right, agree=0.747, adj=0.001, (0 split)
##
## Node number 3: 3037 observations
## predicted class=TRUE expected loss=0.1824169 P(node) =0.3493616
## class counts: 554 2483
## probabilities: 0.182 0.818
##
## Node number 4: 1432 observations
## predicted class=FALSE expected loss=0.1571229 P(node) =0.1647302
## class counts: 1207 225
## probabilities: 0.843 0.157
##
## Node number 5: 4224 observations, complexity param=0.03406721
## predicted class=FALSE expected loss=0.3953598 P(node) =0.4859082
## class counts: 2554 1670
## probabilities: 0.605 0.395
## left son=10 (1391 obs) right son=11 (2833 obs)
## Primary splits:
## Spa < 205 to the right, improve=168.00700, (0 missing)
## VRDeck < 135.5 to the right, improve=129.77700, (0 missing)
## Age < 12.5 to the right, improve= 76.46367, (0 missing)
## FoodCourt < 2507.5 to the left, improve= 63.32833, (0 missing)
## ShoppingMall < 627 to the left, improve= 59.33765, (0 missing)
## Surrogate splits:
## HomePlanet splits as RLRR, agree=0.695, adj=0.073, (0 split)
## deck splits as LRLRRRRLR, agree=0.684, adj=0.042, (0 split)
## FoodCourt < 3197.5 to the right, agree=0.676, adj=0.017, (0 split)
## VRDeck < 2052 to the right, agree=0.673, adj=0.006, (0 split)
## Age < 75.5 to the right, agree=0.672, adj=0.003, (0 split)
##
## Node number 10: 1391 observations
## predicted class=FALSE expected loss=0.194105 P(node) =0.1600138
## class counts: 1121 270
## probabilities: 0.806 0.194
##
## Node number 11: 2833 observations, complexity param=0.03406721
## predicted class=FALSE expected loss=0.4941758 P(node) =0.3258944
## class counts: 1433 1400
## probabilities: 0.506 0.494
## left son=22 (814 obs) right son=23 (2019 obs)
## Primary splits:
## VRDeck < 355 to the right, improve=185.97790, (0 missing)
## FoodCourt < 2069.5 to the left, improve= 64.45210, (0 missing)
## HomePlanet splits as LRRL, improve= 46.60726, (0 missing)
## ShoppingMall < 1540.5 to the left, improve= 38.47446, (0 missing)
## Age < 7.5 to the right, improve= 36.46439, (0 missing)
## Surrogate splits:
## FoodCourt < 10134.5 to the right, agree=0.715, adj=0.007, (0 split)
## Age < 68.5 to the right, agree=0.714, adj=0.004, (0 split)
## deck splits as RRLRRRRRR, agree=0.714, adj=0.004, (0 split)
## RoomService < 343 to the right, agree=0.713, adj=0.001, (0 split)
##
## Node number 22: 814 observations
## predicted class=FALSE expected loss=0.2088452 P(node) =0.09363856
## class counts: 644 170
## probabilities: 0.791 0.209
##
## Node number 23: 2019 observations
## predicted class=TRUE expected loss=0.3907875 P(node) =0.2322558
## class counts: 789 1230
## probabilities: 0.391 0.609
rpart.plot(fit_tree)
preds = predict(fit_tree , newdata = train_set , type = "class")
y_pred = ifelse(preds == TRUE, TRUE, FALSE)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <-as.vector(Transported)
submission <- cbind(PassengerId, Transported)
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 1)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission[["Transported"]])
write.csv(submission, "submissiom_dt.cvs" , row.names = FALSE, quote = FALSE)
##Random forest. Random forest.Random forest algoritması, birden fazla karar ağacının bir araya gelerek çalıştığı bir makine öğrenmesi algoritmasıdır. Her bir ağaç, rastgele örnekleme ve değişken seçimiyle eğitilir.
fit_rf <- randomForest(Transported ~ .,
data = train_set)
fit_rf$importance
## MeanDecreaseGini
## HomePlanet 172.40127
## CryoSleep 418.37719
## Destination 92.39424
## Age 316.42404
## VIP 24.79306
## RoomService 440.06127
## FoodCourt 362.37155
## ShoppingMall 314.33922
## Spa 472.35728
## VRDeck 428.37632
## deck 254.74771
## side 72.19335
## aile 49.00750
varImpPlot(fit_rf)
preds = predict(fit_rf, newdata = test_set, type = "class")
y_pred = ifelse(preds == TRUE, TRUE, FALSE)
Transported <- as.character(y_pred)
PassengerId <- test$PassengerId
Transported <-as.vector(Transported)
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission[["Transported"]])
write.csv(submission, "submissiom_rf.cvs" , row.names = FALSE, quote = FALSE)