uygulamalı ekonometri final projesi

library(rmdformats)

Spaceship Titanic (uzay gemisi titanik)

Welcome to the year 2912, where your data science skills are needed to solve a cosmic mystery. We’ve received a transmission from four lightyears away and things aren’t looking good.

The Spaceship Titanic was an interstellar passenger liner launched a month ago. With almost 13,000 passengers on board, the vessel set out on its maiden voyage transporting emigrants from our solar system to three newly habitable exoplanets orbiting nearby stars.

While rounding Alpha Centauri en route to its first destination—the torrid 55 Cancri E—the unwary Spaceship Titanic collided with a spacetime anomaly hidden within a dust cloud. Sadly, it met a similar fate as its namesake from 1000 years before. Though the ship stayed intact, almost half of the passengers were transported to an alternate dimension!

Kozmik bir gizemi çözmek için veri bilimi becerilerinize ihtiyaç duyulan 2912 yılına hoş geldiniz. Dört ışık yılı öteden bir sinyal aldık ve işler pek iyi görünmüyor.

Uzay Gemisi Titanik, bir ay önce fırlatılan yıldızlararası bir yolcu gemisiydi. Gemide neredeyse 13.000 yolcu bulunan gemi, güneş sistemimizden göçmenleri yakın yıldızların yörüngesinde bulunan üç yeni yaşanabilir dış gezegene taşımak üzere ilk yolculuğuna çıktı.

Dikkatsiz Uzay Gemisi Titanic, ilk varış noktası olan kavurucu 55 Cancri E’ye giderken Alpha Centauri’yi dönerken, bir toz bulutunun içine gizlenmiş bir uzay-zaman anormalliğiyle çarpıştı. Ne yazık ki 1000 yıl öncesindeki adaşı ile benzer bir kaderle karşılaştı. Gemi sağlam kalmasına rağmen yolcuların neredeyse yarısı alternatif bir boyuta taşındı!

library(readr)
train <- read_csv("train.csv")
## Rows: 8693 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Cabin, Destination, Name
## dbl (6): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck
## lgl (3): CryoSleep, VIP, Transported
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

rain datamızda 8693 tane gözlem ve 14 tane değişkenimiz olduğunu görüyoruz.

##Train datasındaki gözlemlerin anlamları:

train.csv: Yolcuların yaklaşık üçte ikisinin (~8700) kişisel kayıtları, eğitim verileri olarak kullanılacak

PassengerId: Her yolcu için benzersiz bir Kimlik. Her kimlik, yolcunun birlikte seyahat ettiği grubu belirten ve grup içindeki numarası olan gggg_ppformu alır . Bir gruptaki insanlar çoğunlukla aile üyeleridir, ancak her zaman değil.ggggpp

HomePlanet:Yolcunun ayrıldığı gezegen, genellikle daimi ikamet ettikleri gezegen.

CryoSleep: Yolcunun yolculuk süresince askıya alınmış animasyona alınmayı seçip seçmediğini belirtir. Dondurucu uykudaki yolcular kabinlerine hapsedilir.

Cabin: Yolcunun kaldığı kabin numarası. deck/num/sideİskele sideveya PSancak formunu alır . _ _ S_

Destination: Yolcunun ineceği gezegen.

Age: Yolcunun yaşı.

VIP:Yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapıp yapmadığı.

RoomService, FoodCourt, ShoppingMall, Spa, VRDeck:Yolcunun Uzay Gemisi Titanic’in birçok lüks olanağının her birinde fatura ettiği tutar.

Name: Yolcunun adı ve soyadı.

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

test data yüklenmesi

library(readr)
test<- read_csv("test.csv")
## Rows: 4277 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Cabin, Destination, Name
## dbl (6): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck
## lgl (2): CryoSleep, VIP
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Yükleme sonunda Test datasında 4277 tane gözlem ve 13 tane değişkenimiz olduğunu gözlemneliyor.

test.csv:Yolcuların geri kalan üçte birinin (~4300) kişisel kayıtları, test verisi olarak kullanılacak.

Transported:Göreviniz bu setteki yolcular için değerini tahmin etmektir ### train datasındaki boşluklar

str(train)
## spc_tbl_ [8,693 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ PassengerId : chr [1:8693] "0001_01" "0002_01" "0003_01" "0003_02" ...
##  $ HomePlanet  : chr [1:8693] "Europa" "Earth" "Europa" "Europa" ...
##  $ CryoSleep   : logi [1:8693] FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ Cabin       : chr [1:8693] "B/0/P" "F/0/S" "A/0/S" "A/0/S" ...
##  $ Destination : chr [1:8693] "TRAPPIST-1e" "TRAPPIST-1e" "TRAPPIST-1e" "TRAPPIST-1e" ...
##  $ Age         : num [1:8693] 39 24 58 33 16 44 26 28 35 14 ...
##  $ VIP         : logi [1:8693] FALSE FALSE TRUE FALSE FALSE FALSE ...
##  $ RoomService : num [1:8693] 0 109 43 0 303 0 42 0 0 0 ...
##  $ FoodCourt   : num [1:8693] 0 9 3576 1283 70 ...
##  $ ShoppingMall: num [1:8693] 0 25 0 371 151 0 3 0 17 0 ...
##  $ Spa         : num [1:8693] 0 549 6715 3329 565 ...
##  $ VRDeck      : num [1:8693] 0 44 49 193 2 0 0 NA 0 0 ...
##  $ Name        : chr [1:8693] "Maham Ofracculy" "Juanna Vines" "Altark Susent" "Solam Susent" ...
##  $ Transported : logi [1:8693] FALSE TRUE FALSE FALSE TRUE TRUE ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   PassengerId = col_character(),
##   ..   HomePlanet = col_character(),
##   ..   CryoSleep = col_logical(),
##   ..   Cabin = col_character(),
##   ..   Destination = col_character(),
##   ..   Age = col_double(),
##   ..   VIP = col_logical(),
##   ..   RoomService = col_double(),
##   ..   FoodCourt = col_double(),
##   ..   ShoppingMall = col_double(),
##   ..   Spa = col_double(),
##   ..   VRDeck = col_double(),
##   ..   Name = col_character(),
##   ..   Transported = col_logical()
##   .. )
##  - attr(*, "problems")=<externalptr>

datadaki boşlukları ve hatalar için str paketini kullanıyoruz

str(test)
## spc_tbl_ [4,277 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ PassengerId : chr [1:4277] "0013_01" "0018_01" "0019_01" "0021_01" ...
##  $ HomePlanet  : chr [1:4277] "Earth" "Earth" "Europa" "Europa" ...
##  $ CryoSleep   : logi [1:4277] TRUE FALSE TRUE FALSE FALSE FALSE ...
##  $ Cabin       : chr [1:4277] "G/3/S" "F/4/S" "C/0/S" "C/1/S" ...
##  $ Destination : chr [1:4277] "TRAPPIST-1e" "TRAPPIST-1e" "55 Cancri e" "TRAPPIST-1e" ...
##  $ Age         : num [1:4277] 27 19 31 38 20 31 21 20 23 24 ...
##  $ VIP         : logi [1:4277] FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ RoomService : num [1:4277] 0 0 0 0 10 0 0 0 0 0 ...
##  $ FoodCourt   : num [1:4277] 0 9 0 6652 0 ...
##  $ ShoppingMall: num [1:4277] 0 0 0 0 635 263 0 0 0 0 ...
##  $ Spa         : num [1:4277] 0 2823 0 181 0 ...
##  $ VRDeck      : num [1:4277] 0 0 0 585 0 60 0 0 0 0 ...
##  $ Name        : chr [1:4277] "Nelly Carsoning" "Lerome Peckers" "Sabih Unhearfus" "Meratz Caltilter" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   PassengerId = col_character(),
##   ..   HomePlanet = col_character(),
##   ..   CryoSleep = col_logical(),
##   ..   Cabin = col_character(),
##   ..   Destination = col_character(),
##   ..   Age = col_double(),
##   ..   VIP = col_logical(),
##   ..   RoomService = col_double(),
##   ..   FoodCourt = col_double(),
##   ..   ShoppingMall = col_double(),
##   ..   Spa = col_double(),
##   ..   VRDeck = col_double(),
##   ..   Name = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>

##Train datasında araştırmak için dataexplorer paketi ve create_report ile rapor oluşumu.

Temel İstatistikler (Basic Statistics)

Ham Sayımlar(Raw Counts)

Name    (AD)                                           Value(Değer)
Rows (Satır)                                           8,693
Columns (Sütun)                                      14
Discrete columns (Ayrık Sütunlar-Kesikli Data)       8
Continuous columns (Sürekli Sütunlar)                6
All missing columns (Tüm Eksik Sütunlar)             0
Missing observations (Eksik Gözlemler)               2,324
Complete Rows    (Tam Sayılar)                         6,606
Total observations (Toplam Gözlem Sayısı)            121,702
Memory allocation   (Bellek Ayırma)                    2.2 Mb

yüzde (Percentages)

Discrete columns (Ayrık Sütunlar-Kesikli Data)
Continuous columns (Sürekli Sütunlar)
All missing columns (Tüm Eksik Sütunlar)
Complete Rows    (Tam Sayılar)
Missing observations (Eksik Gözlemler)
Columns (Sütun)
observation(Gözlem)
Rows (Satır)

###Data Structure (Veri Yapısı) (STR)

###Missing Data Profile (Eksik Veri Profili)

Transported:    Verinin %0'ı kayıp
PassengerId:    Verinin %0'ı kayıp
Age:            Verinin %2.06'sı kayıp
RoomService:    Verinin %2.08'i kayıp
Destination:    Verinin %2.09'u kayıp
Spa:            Verinin %2.11'i kayıp
FoodCourt:      Verinin %2.11'i kayıp
VRDeck:         Verinin %2.16'sı kayıp
Cabin:          Verinin %2.29'u kayıp
Name:           Verinin %2.30'u kayıp
HomePlanet:     Verinin %2.31'i kayıp
VIP:            Verinin %2.34'ü kayıp
ShoppingMall:   Verinin %2.39'u kayıp
CryoSleep:      Verinin %2.50'si kayıp
nivariate Distribution (Tek Değişkenli Dağılım) (continuous-Sürekli)

Histogram Age

Age histogramında 0 ile 80 yaş aralığında en çok 20'li yaşlarda insanların olduğu gözlemleniyor.

FOODCOURT

Fodcourt histogramında 0-30.000 fiyat aralığında çoğu kişinin yemeklere para harcamadığı gözlemleniyor.

ROOMSERVİCE

RoomService histogramında 0-15.000 fiyat aralığında çoğu kişinin oda servisine para harcamad

SHOPPINGMALL

ShoppingMall histogramında 0-25.000 fiyat aralığında kişilerin çoğu alışveriş yapmadığı gözl

SPA

Spa histogramında spa kullanmayanların sayısı kullananlara göre daha fazla olduğu gözlemleniyor.

VRDECK

VRdeck histogramında VRdeck'e insanlar neredeyse hiç para harcamadıkları gözlemleniyor.

Bar Chart (with frequency) (Çubuk Grafik (sıklıkla)) (Discrete-Kesikli)

3 columns ignored with more than 50 categories.(50'den fazla kategoride 3 sütun göz ardı edildi.)
PassengerId: 8693 categories(Yolcu Kimliği: 8693 kategori)
Cabin: 6561 categories(Kabin: 6561 kategori)
Name: 8474 categories(Ad: 8474 kategori)

HOMEPLANET

HomePlanet grafiğinde yolcular en çok Eart gezegeninden bindikleri gözlemleniyor.

CRYOSLEEP

CryoSleep yolcunun yolculuk süresince askıya alınmış animasyona alınmayı büyük oranda seçmed

DESTINATION

Destination grafiğinde yolcular en çok TRAPPIST-1e durağında inecekleri gözlemleniyor.

VIP

VIP grafiğinde yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapmadığı gözlemleniy

TRANSPORTED

Transported grafiğinde yolcuların yarısının yaşadığını yarısınında yaşamadığı tahmin edilmiş

QQ Plot (QQ Grafiği)

Warning: Removed 124 rows containing non-finite values (`stat_qq()`). (Uyarı: Sonlu olmayan 

Datamızın verilerini okumak zor olduğu için train datamızı küçültüyoruz ve küçülttüğümüz datanın raporunu tekrar alıyoruz.

traindatakucultme1 <-train [,c(1:6,14)]

Küçülttüğümüz Train datasındaki korelasyonu inceleyelim.

KORELASYON Transported True ile CroyeSleep True arasındaki doğrusal ilişki gücü 0.46 oranıyla en fazladır.

##Test sonuçlarımız Test datamızı araştırmak için create_report ile rapor oluşturalım.

Datatest Basic Statistics (Temel İstatistikler)

Datatest Raw Counts (Ham Sayımlar)

Name(Ad)                                              Value(Değer)
Rows(Satır)                                         4,277
Columns(Sütun)                                      13
Discrete columns(Ayrık sütunlar)                      7
Continuous columns(Sürekli sütunlar)                  6
All missing columns(Tüm eksik sütunlar)             0
Missing observations(Eksik gözlemler)                 1,117
Complete Rows(Tam Satırlar)                         3,281
Total observations(Toplam gözlem sayısı)              55,601
Memory allocation(Bellek ayırma)                      1.1 Mb

Datatest Percentages (Yüzde)

Discrete columns (Ayrık Sütunlar-Kesikli Data)
Continuous columns (Sürekli Sütunlar)
All missing columns (Tüm Eksik Sütunlar)
Complete Rows    (Tam Sayılar)
Missing observations (Eksik Gözlemler)
Columns (Sütun)
observation(Gözlem)
Rows (Satır)

Datatest Data Structure (Veri Yapısı) (STR)

Datatest Missing Data Profile (Eksik Veri Profili)

PassengerId:    Verinin %0'ı kayıp
VRDeck:         Verinin %1.87'si kayıp
RoomService:    Verinin %1.92'si kayıp
HomePlanet:     Verinin %2.03'ü kayıp
Age:            Verinin %2.13'ü kayıp
Destination:    Verinin %2.15'i kayıp
VIP:            Verinin %2.17'si kayıp
CryoSleep:      Verinin %2.17'si kayıp
Name:           Verinin %2.2'si kayıp
ShoppingMall:   Verinin %2.29'u kayıp
Cabin:          Verinin %2.34'ü kayıp
Spa:            Verinin %2.36'sı kayıp
FoodCourt:      Verinin %2.48'i kayıp

Dataset Univariate Distribution (Tek Değişkenli Dağılım) (continuous-Sürekli)

Datatest Histogram

TEST AGE

Age histogramında 0 ile 80 yaş aralığında en çok 20'li yaşlarda insanların olduğu gözlemlen

TEST FOODCOURT

Foodcourt histogramında 0-30.000 fiyat aralığında çok az kişinin yemeklere para harcadığı ve

TEST ROOMSERVİCE

RoomService histogramında 0-15.000 fiyat aralığında çok az kişinin oda servisine para harcad

TEST SHOPPINGMALL

ShoppingMall histogramında 0-25.000 fiyat aralığında kişilerin çoğu alışveriş yapmadığı gözl

TEST SPA

Spa histogramında spaya ücret ödemek istemeyenlerin sayısı kullananlara göre daha fazla oldu

EST VRDECK

VRdeck histogramında VRdeck'e insanlar neredeyse hiç KİMSE para harcamayı tercih etmediği gö

Datatest Bar Chat(with frequency) (Çubuk Grafik (sıklıkla)) (Discrete-Kesikli)

3 columns ignored with more than 50 categories.(50'den fazla kategoride 3 sütun göz ardı edildi.)
PassengerId: 4277 categories (Yolcu Kimliği: 4277 kategori)
Cabin: 3266 categories (Kabin: 3266 kategori)
Name: 4177 categories (Ad: 4177 kategori)

TEST HOMEPLANET

HomePlanet grafiğinde yolcular birinci olarak Eart gezegeninden, ikinci olarak Europa gezege

TEST CRYOSLEEP

CryoSleep yolcunun yolculuk süresince askıya alınmış animasyona alınmayı büyük oranda s

TEST DESTINATION

Destination grafiğinde yolcular en çok TRAPPIST-1e durağında ikinci olarak 55 Cancri e durağ

TEST VIP

VIP grafiğinde yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapmadığı VIP hizmeti alanların ve alıp almadığı belli olmayan kişierin sayılarının nerdeyse eşit olduğu  gözlemleniyor.

Datatest QQ Plot (QQ Grafiği)

TEST AGE-FOODCOURT-ROOMSERVICE-SHOPPINGMALL-SPA ve VRDECK

AGE-FOODCOURT-ROOMSERVICE-SHOPPINGMALL-SPA ve VRDECK grafikleri gelirle ilgili olduğu için normal dağılım göstermemektedir.

Datamızın verilerini okumak zor olduğu için test datamızı küçültüyoruz ve küçülttüğümüz datanın raporunu tekrar alıyoruz.

testdatakucultme1 <-test [,c(1:6,13)]

Küçülttüğümüz Test datasındaki korelasyonu inceleyelim.

TEST KORELASYON

Destination _55.cancri.e ile HomePlanet_europa arasındaki doğrusal ilişki gücü 0.33 oranıyla en yüksek olandır

Veri setinin Sayı Değişkeni İstatiksel Özeti

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ purrr     1.0.2
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(explore)

Train

Train veri çerçevesindeki sayısal değişkenlerin istatistik özetini alımı

summary(train)
##  PassengerId         HomePlanet        CryoSleep          Cabin          
##  Length:8693        Length:8693        Mode :logical   Length:8693       
##  Class :character   Class :character   FALSE:5439      Class :character  
##  Mode  :character   Mode  :character   TRUE :3037      Mode  :character  
##                                        NA's :217                         
##                                                                          
##                                                                          
##                                                                          
##  Destination             Age           VIP           RoomService     
##  Length:8693        Min.   : 0.00   Mode :logical   Min.   :    0.0  
##  Class :character   1st Qu.:19.00   FALSE:8291      1st Qu.:    0.0  
##  Mode  :character   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    
##  Length:8693        Mode :logical  
##  Class :character   FALSE:4315     
##  Mode  :character   TRUE :4378     
##                                    
##                                    
##                                    
## 
head(train)
## # A tibble: 6 × 14
##   PassengerId HomePlanet CryoSleep Cabin Destination     Age VIP   RoomService
##   <chr>       <chr>      <lgl>     <chr> <chr>         <dbl> <lgl>       <dbl>
## 1 0001_01     Europa     FALSE     B/0/P TRAPPIST-1e      39 FALSE           0
## 2 0002_01     Earth      FALSE     F/0/S TRAPPIST-1e      24 FALSE         109
## 3 0003_01     Europa     FALSE     A/0/S TRAPPIST-1e      58 TRUE           43
## 4 0003_02     Europa     FALSE     A/0/S TRAPPIST-1e      33 FALSE           0
## 5 0004_01     Earth      FALSE     F/1/S TRAPPIST-1e      16 FALSE         303
## 6 0005_01     Earth      FALSE     F/0/P PSO J318.5-22    44 FALSE           0
## # ℹ 6 more variables: FoodCourt <dbl>, ShoppingMall <dbl>, Spa <dbl>,
## #   VRDeck <dbl>, Name <chr>, Transported <lgl>

Test

Test Veri Çerçevesindeki Sayısal Değişkenlerinin İstatiksiksel ÖZeti alımı

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
head(test)
## # A tibble: 6 × 13
##   PassengerId HomePlanet CryoSleep Cabin Destination   Age VIP   RoomService
##   <chr>       <chr>      <lgl>     <chr> <chr>       <dbl> <lgl>       <dbl>
## 1 0013_01     Earth      TRUE      G/3/S TRAPPIST-1e    27 FALSE           0
## 2 0018_01     Earth      FALSE     F/4/S TRAPPIST-1e    19 FALSE           0
## 3 0019_01     Europa     TRUE      C/0/S 55 Cancri e    31 FALSE           0
## 4 0021_01     Europa     FALSE     C/1/S TRAPPIST-1e    38 FALSE           0
## 5 0023_01     Earth      FALSE     F/5/S TRAPPIST-1e    20 FALSE          10
## 6 0027_01     Earth      FALSE     F/7/P TRAPPIST-1e    31 FALSE           0
## # ℹ 5 more variables: FoodCourt <dbl>, ShoppingMall <dbl>, Spa <dbl>,
## #   VRDeck <dbl>, Name <chr>

Train veri setindeki passenger sütünü aile numarası ve aile sıra olarak 2 sütüna ayrılması

library(stringr)
train[c('aileno', 'ailesıra')] <- str_split_fixed(train$PassengerId, "_", 2)

Train Datasında Aile no ve aile sıra sütunları ileri alınması

train<-train[c(15:16,1:14)]

Train datadaki kabin sütunu kabin harfi kabinno ve iskelebölgesi olarak 3’e ayrılması

train[c('kabinharfi', 'kabinno', 'guvertebolgesi')] <- str_split_fixed(train$Cabin, '/', 3)

Train datasındaki Kabinin sütununun yanına kabinharfi, kabinno ve guvertebolgesi sütunlarını koyalım.

train<-train[c(1:6,17:19,7:16)]

Train datadaki Cabin sütununu silimi.

train<- train %>% select(-Cabin)

Test Datasındaki PassengerId sütununu aile no ve aile sıraları olarak iki sütuna ayırma

library(stringr)
test[c('aileno', 'ailesıra')] <- str_split_fixed(test$PassengerId, "_", 2)

Test Datasında Aileno ve ailesıra sütunlarını ileri alımı.

test<-test[c(14,15,1:13)]

test Datasınd Kabin sütununu kabinharfi, kabinno ve guvertebolgesi olarak üçe ayrılması.

test[c('kabinharfi', 'kabinno', 'guvertebolgesi')] <- str_split_fixed(test$Cabin, '/', 3)

Test Datasında Kabinin sütununun yanına kabinharfi, kabinno ve iskelebölgesi sütunlarını koyalım.

test<-test[c(1:6,16,17,18,7:15)]

Test Datasından Cabin sütunlarını silimi.

test<- test %>% select(-Cabin)

Veri setlerimizdeki boşluk bulanan yerleri doldurulma.

Train

Train datasındaki Homeplanet değişkenindeki boşluk olan NA’ları doldurulması.

train$HomePlanet <- addNA(train$HomePlanet)
levels(train$HomePlanet)[is.na(levels(train$HomePlanet))] <- "NA"

Homeplanet değişkenindeki boşluk olan NA’ların sıfırlandığını kontrolü.

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 aileno         chr       0    0     6217    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     8693    NA  NA       NA
##  4 HomePlanet     fct       0    0        4    NA  NA       NA
##  5 CryoSleep      lgl     217    2.5      3     0   0.36     1
##  6 kabinharfi     chr     199    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1818    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    chr     182    2.1      4    NA  NA       NA
## 10 Age            dbl     179    2.1     81     0  28.8     79
## 11 VIP            lgl     203    2.3      3     0   0.02     1
## 12 RoomService    dbl     181    2.1   1274     0 225.   14327
## 13 FoodCourt      dbl     183    2.1   1508     0 458.   29813
## 14 ShoppingMall   dbl     208    2.4   1116     0 174.   23492
## 15 Spa            dbl     183    2.1   1328     0 311.   22408
## 16 VRDeck         dbl     188    2.2   1307     0 305.   24133
## 17 Name           chr     200    2.3   8474    NA  NA       NA
## 18 Transported    lgl       0    0        2     0   0.5      1

Train datasında Age değişkenindeki boşluk olan NA’ları HomePlanet değişkenine göre ortalama yaş ile doldurulması.

train <- train %>%
  group_by(HomePlanet,Destination) %>%
  mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))

Age değişkenindeki boşluk olan NA’ları ortalama yaş ile değiştiğini kontrolü.

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

Cryosleep için kontrolü.

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 aileno         chr       0    0     6217    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     8693    NA  NA       NA
##  4 HomePlanet     fct       0    0        4    NA  NA       NA
##  5 CryoSleep      fct       0    0        3    NA  NA       NA
##  6 kabinharfi     chr     199    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1818    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    chr     182    2.1      4    NA  NA       NA
## 10 Age            dbl       0    0       91     0  28.8     79
## 11 VIP            lgl     203    2.3      3     0   0.02     1
## 12 RoomService    dbl     181    2.1   1274     0 225.   14327
## 13 FoodCourt      dbl     183    2.1   1508     0 458.   29813
## 14 ShoppingMall   dbl     208    2.4   1116     0 174.   23492
## 15 Spa            dbl     183    2.1   1328     0 311.   22408
## 16 VRDeck         dbl     188    2.2   1307     0 305.   24133
## 17 Name           chr     200    2.3   8474    NA  NA       NA
## 18 Transported    lgl       0    0        2     0   0.5      1

Train verimizdeki Destination üç seçeneği var bunlar True False ve Na.Bunlara tek tek bakmak zor olduğu için üçe ayırıyoruz.

train$Destination <- addNA(train$Destination)
levels(train$Destination)[is.na(levels(train$Destination))] <- "NA"

Destination için kontrolü.

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 aileno         chr       0    0     6217    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     8693    NA  NA       NA
##  4 HomePlanet     fct       0    0        4    NA  NA       NA
##  5 CryoSleep      fct       0    0        3    NA  NA       NA
##  6 kabinharfi     chr     199    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1818    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    fct       0    0        4    NA  NA       NA
## 10 Age            dbl       0    0       91     0  28.8     79
## 11 VIP            lgl     203    2.3      3     0   0.02     1
## 12 RoomService    dbl     181    2.1   1274     0 225.   14327
## 13 FoodCourt      dbl     183    2.1   1508     0 458.   29813
## 14 ShoppingMall   dbl     208    2.4   1116     0 174.   23492
## 15 Spa            dbl     183    2.1   1328     0 311.   22408
## 16 VRDeck         dbl     188    2.2   1307     0 305.   24133
## 17 Name           chr     200    2.3   8474    NA  NA       NA
## 18 Transported    lgl       0    0        2     0   0.5      1

Train verisinde VIP üç seçeneği olur bunlar True False ve Na.Bunlara tek tek bakmak zor,kolaay olması için üçe ayrımı.

train$VIP <- addNA(train$VIP)
levels(train$VIP)[is.na(levels(train$VIP))] <- "NA"

VİP için kontrolü.

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 aileno         chr       0    0     6217    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     8693    NA  NA      NA
##  4 HomePlanet     fct       0    0        4    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     199    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1818    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       91     0  28.8    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl     181    2.1   1274     0 225.  14327
## 13 FoodCourt      dbl     183    2.1   1508     0 458.  29813
## 14 ShoppingMall   dbl     208    2.4   1116     0 174.  23492
## 15 Spa            dbl     183    2.1   1328     0 311.  22408
## 16 VRDeck         dbl     188    2.2   1307     0 305.  24133
## 17 Name           chr     200    2.3   8474    NA  NA      NA
## 18 Transported    lgl       0    0        2     0   0.5     1

Train verisinde RoomServicelar rakamlardan oluştuğu için boşluk olan NA ları gidecekleri gezegenlere göre ortalama ile doldurumu.

train <- train %>%
  group_by(Destination) %>%
  mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))

Roomservice için kontrol sağlıyoruz.

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 aileno         chr       0    0     6217    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     8693    NA  NA      NA
##  4 HomePlanet     fct       0    0        4    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     199    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1818    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       91     0  28.8    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl       0    0     1277     0 225.  14327
## 13 FoodCourt      dbl     183    2.1   1508     0 458.  29813
## 14 ShoppingMall   dbl     208    2.4   1116     0 174.  23492
## 15 Spa            dbl     183    2.1   1328     0 311.  22408
## 16 VRDeck         dbl     188    2.2   1307     0 305.  24133
## 17 Name           chr     200    2.3   8474    NA  NA      NA
## 18 Transported    lgl       0    0        2     0   0.5     1

Train verisinde FoodCourt’ta rakam ama ilk önce histogramını çıkararak boşluklara koyulacak en uygun rakamların gösterimi.

hist(train$FoodCourt)

train <- train %>% mutate(FoodCourt = coalesce(FoodCourt, 0))

FoodCourt için kontrolü sağlanması.

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 aileno         chr       0    0     6217    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     8693    NA  NA      NA
##  4 HomePlanet     fct       0    0        4    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     199    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1818    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       91     0  28.8    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl       0    0     1277     0 225.  14327
## 13 FoodCourt      dbl       0    0     1507     0 448.  29813
## 14 ShoppingMall   dbl     208    2.4   1116     0 174.  23492
## 15 Spa            dbl     183    2.1   1328     0 311.  22408
## 16 VRDeck         dbl     188    2.2   1307     0 305.  24133
## 17 Name           chr     200    2.3   8474    NA  NA      NA
## 18 Transported    lgl       0    0        2     0   0.5     1

Train verisinde ShoppingMall, Spa ve VRDeck’i bir arada boşlukların sıfırlanması.

train <- train %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0),
                          Spa = coalesce(Spa, 0),
                          VRDeck = coalesce(VRDeck, 0))

ShoppingMall, Spa ve VRDeck için boşlukların sıfırlanmasının kontrolü.

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 aileno         chr       0    0     6217    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     8693    NA  NA      NA
##  4 HomePlanet     fct       0    0        4    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     199    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1818    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       91     0  28.8    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl       0    0     1277     0 225.  14327
## 13 FoodCourt      dbl       0    0     1507     0 448.  29813
## 14 ShoppingMall   dbl       0    0     1115     0 170.  23492
## 15 Spa            dbl       0    0     1327     0 305.  22408
## 16 VRDeck         dbl       0    0     1306     0 298.  24133
## 17 Name           chr     200    2.3   8474    NA  NA      NA
## 18 Transported    lgl       0    0        2     0   0.5     1

Train verisinde Name değişkeni bize herhangi bilgiyi vermediği için veriden çıkarılması.

train<- train %>% select(-Name)

Train verisindeki kabinharfi değişkeninde ki boşluk olan Na’ları da AddNa ile kategorileştirilmesi.

train$kabinharfi <- addNA(train$kabinharfi)
levels(train$kabinharfi)[is.na(levels(train$kabinharfi))] <- "NA"

Kabinharfini kontrolü.

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 aileno         chr       0      0   6217    NA  NA      NA
##  2 ailesıra       chr       0      0      8    NA  NA      NA
##  3 PassengerId    chr       0      0   8693    NA  NA      NA
##  4 HomePlanet     fct       0      0      4    NA  NA      NA
##  5 CryoSleep      fct       0      0      3    NA  NA      NA
##  6 kabinharfi     fct       0      0      9    NA  NA      NA
##  7 kabinno        chr       0      0   1818    NA  NA      NA
##  8 guvertebolgesi chr       0      0      3    NA  NA      NA
##  9 Destination    fct       0      0      4    NA  NA      NA
## 10 Age            dbl       0      0     91     0  28.8    79
## 11 VIP            fct       0      0      3    NA  NA      NA
## 12 RoomService    dbl       0      0   1277     0 225.  14327
## 13 FoodCourt      dbl       0      0   1507     0 448.  29813
## 14 ShoppingMall   dbl       0      0   1115     0 170.  23492
## 15 Spa            dbl       0      0   1327     0 305.  22408
## 16 VRDeck         dbl       0      0   1306     0 298.  24133
## 17 Transported    lgl       0      0      2     0   0.5     1

Train verisindeki PassengerId’de aile no (numarası) aynı olanların 1 aynı olmayanların 0 verilmesi.

train$aile <- ifelse(duplicated(train$aileno) | duplicated(train$aileno, fromLast=TRUE), 1, 0)

Train verisinde PassengerId’de tekrarlanan aile numaralarının ilk 20 satırının kotrolü.

head(train[, c("PassengerId","aileno","ailesıra","aile")], 20)
## # A tibble: 20 × 4
##    PassengerId aileno ailesıra  aile
##    <chr>       <chr>  <chr>    <dbl>
##  1 0001_01     0001   01           0
##  2 0002_01     0002   01           0
##  3 0003_01     0003   01           1
##  4 0003_02     0003   02           1
##  5 0004_01     0004   01           0
##  6 0005_01     0005   01           0
##  7 0006_01     0006   01           1
##  8 0006_02     0006   02           1
##  9 0007_01     0007   01           0
## 10 0008_01     0008   01           1
## 11 0008_02     0008   02           1
## 12 0008_03     0008   03           1
## 13 0009_01     0009   01           0
## 14 0010_01     0010   01           0
## 15 0011_01     0011   01           0
## 16 0012_01     0012   01           0
## 17 0014_01     0014   01           0
## 18 0015_01     0015   01           0
## 19 0016_01     0016   01           0
## 20 0017_01     0017   01           1

Train verisinde aile numarasına, aileırasına ve kabin no (numarasın) ihtiyacımız olmadığı için sütunların silelimi.

train<- train %>% select(-c(aileno, ailesıra, kabinno))

Train verisinde kalan son değişkenlerin kontrolü.

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 kabinharfi     fct       0      0      9    NA  NA       NA
##  5 guvertebolgesi chr       0      0      3    NA  NA       NA
##  6 Destination    fct       0      0      4    NA  NA       NA
##  7 Age            dbl       0      0     91     0  28.8     79
##  8 VIP            fct       0      0      3    NA  NA       NA
##  9 RoomService    dbl       0      0   1277     0 225.   14327
## 10 FoodCourt      dbl       0      0   1507     0 448.   29813
## 11 ShoppingMall   dbl       0      0   1115     0 170.   23492
## 12 Spa            dbl       0      0   1327     0 305.   22408
## 13 VRDeck         dbl       0      0   1306     0 298.   24133
## 14 Transported    lgl       0      0      2     0   0.5      1
## 15 aile           dbl       0      0      2     0   0.45     1

##Test

Test datasında Homeplanet değişkenindeki boşluk olan NA’ların doldurulması.

test$HomePlanet <- addNA(test$HomePlanet)
levels(test$HomePlanet)[is.na(levels(test$HomePlanet))] <- "NA"
test <- test %>%
  mutate(HomePlanet = case_when(
    CryoSleep & (kabinharfi %in% c("G", "E")) ~ "MARS",
    CryoSleep & kabinharfi %in% c("G", "E") ~ "EARTH",
    TRUE ~ "EUROPA"))

Homeplanet değişkeninde boşluk olan NA’ların sıfırlandığını kontrolü.

test %>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min   mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     4277    NA  NA       NA
##  4 HomePlanet     chr       0    0        2    NA  NA       NA
##  5 CryoSleep      lgl      93    2.2      3     0   0.37     1
##  6 kabinharfi     chr     100    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1506    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    chr      92    2.2      4    NA  NA       NA
## 10 Age            dbl      91    2.1     80     0  28.7     79
## 11 VIP            lgl      93    2.2      3     0   0.02     1
## 12 RoomService    dbl      82    1.9    843     0 219.   11567
## 13 FoodCourt      dbl     106    2.5    903     0 439.   25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.    8292
## 15 Spa            dbl     101    2.4    834     0 303.   19844
## 16 VRDeck         dbl      80    1.9    797     0 311.   22272
## 17 Name           chr      94    2.2   4177    NA  NA       NA

Test datasında AGE değişkeninde boşluk olan NA’ları HomePlanet ve Destination değişkenine göre ortalama yaş ile doldurulması.

test <- test %>%
  group_by(HomePlanet,Destination) %>%
  mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))

Age değişkeninde olan boşlukların NA’ları ortalama yaş ile değiştiğini kontrolü.

test %>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min   mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     4277    NA  NA       NA
##  4 HomePlanet     chr       0    0        2    NA  NA       NA
##  5 CryoSleep      lgl      93    2.2      3     0   0.37     1
##  6 kabinharfi     chr     100    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1506    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    chr      92    2.2      4    NA  NA       NA
## 10 Age            dbl       0    0       86     0  28.7     79
## 11 VIP            lgl      93    2.2      3     0   0.02     1
## 12 RoomService    dbl      82    1.9    843     0 219.   11567
## 13 FoodCourt      dbl     106    2.5    903     0 439.   25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.    8292
## 15 Spa            dbl     101    2.4    834     0 303.   19844
## 16 VRDeck         dbl      80    1.9    797     0 311.   22272
## 17 Name           chr      94    2.2   4177    NA  NA       NA

Test verimizdeki Cryosleep içinde aynısını uygulanması.

test$CryoSleep <- addNA(test$CryoSleep)
levels(test$CryoSleep)[is.na(levels(test$CryoSleep))] <- "NA"

Cryosleep`in kontrolü..

test %>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min   mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     4277    NA  NA       NA
##  4 HomePlanet     chr       0    0        2    NA  NA       NA
##  5 CryoSleep      fct       0    0        3    NA  NA       NA
##  6 kabinharfi     chr     100    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1506    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    chr      92    2.2      4    NA  NA       NA
## 10 Age            dbl       0    0       86     0  28.7     79
## 11 VIP            lgl      93    2.2      3     0   0.02     1
## 12 RoomService    dbl      82    1.9    843     0 219.   11567
## 13 FoodCourt      dbl     106    2.5    903     0 439.   25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.    8292
## 15 Spa            dbl     101    2.4    834     0 303.   19844
## 16 VRDeck         dbl      80    1.9    797     0 311.   22272
## 17 Name           chr      94    2.2   4177    NA  NA       NA

Test verimizde Destination’a uygulanması.

test$Destination <- addNA(test$Destination)
levels(test$Destination)[is.na(levels(test$Destination))] <- "NA"

Destination kontrolü.

test %>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min   mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA       NA
##  2 ailesıra       chr       0    0        8    NA  NA       NA
##  3 PassengerId    chr       0    0     4277    NA  NA       NA
##  4 HomePlanet     chr       0    0        2    NA  NA       NA
##  5 CryoSleep      fct       0    0        3    NA  NA       NA
##  6 kabinharfi     chr     100    2.3      9    NA  NA       NA
##  7 kabinno        chr       0    0     1506    NA  NA       NA
##  8 guvertebolgesi chr       0    0        3    NA  NA       NA
##  9 Destination    fct       0    0        4    NA  NA       NA
## 10 Age            dbl       0    0       86     0  28.7     79
## 11 VIP            lgl      93    2.2      3     0   0.02     1
## 12 RoomService    dbl      82    1.9    843     0 219.   11567
## 13 FoodCourt      dbl     106    2.5    903     0 439.   25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.    8292
## 15 Spa            dbl     101    2.4    834     0 303.   19844
## 16 VRDeck         dbl      80    1.9    797     0 311.   22272
## 17 Name           chr      94    2.2   4177    NA  NA       NA

Test verimizde VIP üç seçeneği vardor bunlar True , False ve Na.teker teker bakılmasının zorluğundan üçe ayırıyoruz.

test$VIP <- addNA(test$VIP)
levels(test$VIP)[is.na(levels(test$VIP))] <- "NA"

VIP’in kontrolü.

test %>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min  mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     4277    NA  NA      NA
##  4 HomePlanet     chr       0    0        2    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     100    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1506    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       86     0  28.7    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl      82    1.9    843     0 219.  11567
## 13 FoodCourt      dbl     106    2.5    903     0 439.  25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.   8292
## 15 Spa            dbl     101    2.4    834     0 303.  19844
## 16 VRDeck         dbl      80    1.9    797     0 311.  22272
## 17 Name           chr      94    2.2   4177    NA  NA      NA

Test verisinde RoomServicelar rakamlardan oluştuğu için boşluk olan NA ları gidecekleri gezegenlere göre ortalama ile doldurulması.

test <- test %>%
  group_by(Destination) %>%
  mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))

Roomservice Kontrolü.

test%>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min  mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     4277    NA  NA      NA
##  4 HomePlanet     chr       0    0        2    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     100    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1506    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       86     0  28.7    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl       0    0      846     0 219.  11567
## 13 FoodCourt      dbl     106    2.5    903     0 439.  25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.   8292
## 15 Spa            dbl     101    2.4    834     0 303.  19844
## 16 VRDeck         dbl      80    1.9    797     0 311.  22272
## 17 Name           chr      94    2.2   4177    NA  NA      NA

Test verisinde FoodCourt içinde boşluk olanları sıfır olarak değişimi.

test <- test %>% mutate(FoodCourt = coalesce(FoodCourt, 0))

Test verisindeki FoodCourt’ta rakam ama ilk önce histogramını çıkararak boşluklara koyulacak en uygun rakamları görelim.

hist(test$FoodCourt)

test%>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min  mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     4277    NA  NA      NA
##  4 HomePlanet     chr       0    0        2    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     100    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1506    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       86     0  28.7    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl       0    0      846     0 219.  11567
## 13 FoodCourt      dbl       0    0      902     0 429.  25273
## 14 ShoppingMall   dbl      98    2.3    716     0 177.   8292
## 15 Spa            dbl     101    2.4    834     0 303.  19844
## 16 VRDeck         dbl      80    1.9    797     0 311.  22272
## 17 Name           chr      94    2.2   4177    NA  NA      NA

Test verisinde ShoppingMall, Spa ve VRDeck’i bir arada boşlukların sıfırlanması.

test <- test %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0),
                          Spa = coalesce(Spa, 0),
                          VRDeck = coalesce(VRDeck, 0))

ShoppingMall, Spa ve VRDeck için boşlukların sıfırlandıklarının kontrolü.

test%>% describe_all()
## # A tibble: 17 × 8
##    variable       type     na na_pct unique   min  mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 aileno         chr       0    0     3063    NA  NA      NA
##  2 ailesıra       chr       0    0        8    NA  NA      NA
##  3 PassengerId    chr       0    0     4277    NA  NA      NA
##  4 HomePlanet     chr       0    0        2    NA  NA      NA
##  5 CryoSleep      fct       0    0        3    NA  NA      NA
##  6 kabinharfi     chr     100    2.3      9    NA  NA      NA
##  7 kabinno        chr       0    0     1506    NA  NA      NA
##  8 guvertebolgesi chr       0    0        3    NA  NA      NA
##  9 Destination    fct       0    0        4    NA  NA      NA
## 10 Age            dbl       0    0       86     0  28.7    79
## 11 VIP            fct       0    0        3    NA  NA      NA
## 12 RoomService    dbl       0    0      846     0 219.  11567
## 13 FoodCourt      dbl       0    0      902     0 429.  25273
## 14 ShoppingMall   dbl       0    0      715     0 173.   8292
## 15 Spa            dbl       0    0      833     0 296.  19844
## 16 VRDeck         dbl       0    0      796     0 305.  22272
## 17 Name           chr      94    2.2   4177    NA  NA      NA

Test verisindeki Name değişkeni bize herhangi bilgiyi vermediği için veriden çıkarılması.

test<- test %>% select(-Name)

Test verisindeki kabinharfi değişkeninde ki boşluk olan Na’ları da AddNa ile kategorileştirilmesi.

test$kabinharfi <- addNA(test$kabinharfi)
levels(test$kabinharfi)[is.na(levels(test$kabinharfi))] <- "NA"

Kabinharfini kontrolü

test%>% describe_all()
## # A tibble: 16 × 8
##    variable       type     na na_pct unique   min  mean   max
##    <chr>          <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 aileno         chr       0      0   3063    NA  NA      NA
##  2 ailesıra       chr       0      0      8    NA  NA      NA
##  3 PassengerId    chr       0      0   4277    NA  NA      NA
##  4 HomePlanet     chr       0      0      2    NA  NA      NA
##  5 CryoSleep      fct       0      0      3    NA  NA      NA
##  6 kabinharfi     fct       0      0      9    NA  NA      NA
##  7 kabinno        chr       0      0   1506    NA  NA      NA
##  8 guvertebolgesi chr       0      0      3    NA  NA      NA
##  9 Destination    fct       0      0      4    NA  NA      NA
## 10 Age            dbl       0      0     86     0  28.7    79
## 11 VIP            fct       0      0      3    NA  NA      NA
## 12 RoomService    dbl       0      0    846     0 219.  11567
## 13 FoodCourt      dbl       0      0    902     0 429.  25273
## 14 ShoppingMall   dbl       0      0    715     0 173.   8292
## 15 Spa            dbl       0      0    833     0 296.  19844
## 16 VRDeck         dbl       0      0    796     0 305.  22272

test verisinde PassengerId’de aile no (numarası) aynı olanlara 1 olmayanlara 0 verilmesi.

test$aile <- ifelse(duplicated(test$aileno) | duplicated(test$aileno, fromLast=TRUE), 1, 0)

Test verisinde PassengerId’de tekrarlanan aile numaralarının ilk 20 satırın kontrolü.

head(test[, c("PassengerId","aileno","ailesıra","aile")], 20)
## # A tibble: 20 × 4
##    PassengerId aileno ailesıra  aile
##    <chr>       <chr>  <chr>    <dbl>
##  1 0013_01     0013   01           0
##  2 0018_01     0018   01           0
##  3 0019_01     0019   01           0
##  4 0021_01     0021   01           0
##  5 0023_01     0023   01           0
##  6 0027_01     0027   01           0
##  7 0029_01     0029   01           0
##  8 0032_01     0032   01           1
##  9 0032_02     0032   02           1
## 10 0033_01     0033   01           0
## 11 0037_01     0037   01           0
## 12 0040_01     0040   01           1
## 13 0040_02     0040   02           1
## 14 0042_01     0042   01           0
## 15 0046_01     0046   01           1
## 16 0046_02     0046   02           1
## 17 0046_03     0046   03           1
## 18 0047_01     0047   01           1
## 19 0047_02     0047   02           1
## 20 0047_03     0047   03           1

test verisinde aile no (numarasına), aileırasına ve kabinnumarasına ihtiyacımız kalmadı, sütunların silinmesi.

test<- test %>% select(-c(aileno, ailesıra, kabinno))

Test verisinde kalan son değişkenlerin kontrolü.

test %>% 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   4277    NA  NA       NA
##  2 HomePlanet     chr       0      0      2    NA  NA       NA
##  3 CryoSleep      fct       0      0      3    NA  NA       NA
##  4 kabinharfi     fct       0      0      9    NA  NA       NA
##  5 guvertebolgesi chr       0      0      3    NA  NA       NA
##  6 Destination    fct       0      0      4    NA  NA       NA
##  7 Age            dbl       0      0     86     0  28.7     79
##  8 VIP            fct       0      0      3    NA  NA       NA
##  9 RoomService    dbl       0      0    846     0 219.   11567
## 10 FoodCourt      dbl       0      0    902     0 429.   25273
## 11 ShoppingMall   dbl       0      0    715     0 173.    8292
## 12 Spa            dbl       0      0    833     0 296.   19844
## 13 VRDeck         dbl       0      0    796     0 305.   22272
## 14 aile           dbl       0      0      2     0   0.45     1

TAHMİNLERE BAŞLANMASI

1. LOGISTIC REGRESYON NEDİR?

Lojistik regresyon, bağımlı değişkenin kategorik bir değişken olduğu regresyon problemi gibidir. Doğrusal sınıflandırma problemlerinde yaygın bir biçimde kullanılır. Regresyon denilmesine rağmen burada bir sınıflandırma söz konusudur.Lojistik regresyon, bir sonucu belirleyen bir veya daha fazla bağımsız değişken bulunan bir veri kümesini analiz etmek için kullanılan istatistiksel bir yöntemdir. Sonuç, ikili bir değişkenle ölçülür (yalnızca iki olası sonuç vardır).Lojistik regresyonun amacı, iki yönlü karakteristiği (bağımlı değişken = yanıt veya sonuç değişkeni) ile ilgili bir dizi bağımsız (öngörücü veya açıklayıcı) değişken arasındaki ilişkiyi tanımlamak için en uygun modeli bulmaktır.

Kaynakça:https://medium.com/@rmys.nzl/r-i%CC%87le-lojistik-regresyon-analizi-600e188d2f1e

Train veri setindeki PassengerId bize sonucu vereceği için o hariç bütün değişkenleri regresyonumuzda kullanıcağız.Bu yüzden PassengerId değişkenini Train setimizden çıkaralım.

train_set <- train[2:15]

Test veri setinde PassengerId bize sonucu vereceği PassengerId hariç bütün değişkenlerin regresyonumuzda kullanıcağız ve Bu yüzden PassengerId değişkenini Test setinden çıkaraılıması.

test_set <- test[2:14]

Modelin gerçek sonuçları elimizde bulunmadığı için Train versini 0.82 olarak traning_set ve 0.18’sini de testing_set olarak ikiye ayrılması, Daha sonra traning_set verisini testing_set üzerinde kullanarak tahminlerin gerçekle ne kadar uyumluluğunun gözlemlenmesi.

library(caTools)
set.seed(179)
split= sample.split(train_set$Transported, SplitRatio = 0.82)
training_set =subset (train_set, split ==TRUE)
testing_set =subset (train_set, split ==FALSE)

Lojistik regresyon modelin tanımlanması ve oluşturulması. Modelin bağımlı değişkenini “Transported” ve bağımsız değişkenlerin hepsini almak için “.” konulması. Bağımlı değişkenin iki kategorili olduğu için binomial ile modelin olasılık dağılımını belirlenmesi. Tahminlerin yapıloması için Training_set’in kullanılması.

logistic =glm(formula = Transported~ .,
              family = binomial,
              data = training_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

Oluşturulan lojistik regresyon üzerinde tahminlerin Testing_set’ten Transported’a çıkarıralarak Testing_set üzerinde tahiminlerin yapaılması.

tahmin= predict(logistic, type= 'response', newdata = testing_set[-13])
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases

Tahmin değerin 0.5’ten büyük olup olmadığının kontrolü yapılması. Tahmin değeri 0.5’ten büyükse 1 değilse 0 değeri atanması.

tahminim= ifelse(tahmin>0.5, 1 ,0)

gerçekdegerlerim eğer Testing_set’indeki Tansported değerlerimiz True ise 1 False ise 0 olarak atanması.

gercekdegerler<- ifelse (testing_set[13]== TRUE, 1,0)
cm = table(gercekdegerler, tahminim)
cm
##               tahminim
## gercekdegerler   0   1
##              0 585 192
##              1 139 649

Kurduğumuz regresyona göre gerçekdegerler 0 olduğunda tahminim 585 kere insanların ölmediğini doğru, 192 kere de yanlış tahmin etmiştir. Gerçekdeger 1 olduğunda649 kere insanların öldüğünü doğru 139 kere yanlış tahmin etmiştir. Bulduğum tahmini oranım şu şekilde

\[ (585+649)/(585+192+139+649) \]

(585+649)/(585+192+139+649)
## [1] 0.7884984

Tahmine göre yolcuların ~%78’i ölmüştür.

Lojistik regresyona Train_set oluşturarak ve bağımlı modelin Transported ile bağımsız değişkenler arasındaki ilişkinin bulunması.

logistic_son<-glm(formula = Transported~ .,
              family = binomial,
              data = train_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

Bulunan lojistik regresyonun test_set adında yeni bir veri setinde gözlenmesi.

tahminim= ifelse(tahmin>0.5, TRUE, FALSE)

tahminim’i karaktere çevirelim ve adını Transported olarak değiştirelim.Test setimizin içindeki PassengerId’i de alalım ve Passenger Id olarak adını değiştirelim.

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

Transported’ımızı vektör olarak değiştirelim.

Transported<-as.vector(Transported)

İki değişkeni birleştirelim

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

Submission verilerimizi tabloya dönüştürelim.

submission <- as.data.frame(submission)

Raporlama yapabilmek için stringr paketini yükleyelim.

library(stringr)

Submission verilerimizi raporlayalım.

submission$Transported <- str_to_title(submission$Transported)

Raporladığımız Submission verilerimizi excel dosyasına aktaralım.

write.csv(submission, "submission_logistic.csv", row.names =FALSE, quote=FALSE)
Kaggle Logistic Regresyon sonucum

2.NAIVE BAYES REGRESYON?

Bu teorem bir rassal değişken için olasılık dağılımı içinde koşullu olasılıklar ile marjinal olasılıklar arasındaki ilişkiyi gösterir.girdi değişkenlerinin bağımsız olduğunu ve her birinin sonucu etkilemediğini varsayar. Bu “naive” (saf) varsayım, modelin hesaplamalarını basitleştirir ve hesaplama karmaşıklığını azaltır.Girdi değişkenlerinin bir dizi kategorik değer olmasına dayanır. Bu kategorik değerler, bağımlı değişkenin tahminlenmesinde kullanılır. Model, verilerdeki desenleri öğrenir ve bu desenleri kullanarak yeni girdi değerleri için bir tahmin yapar.Kullanım alanlarına örnek olarak gerçek zamanlı tahmin, çok sınıflı tahmin, metin sınıflandırması, spam filtreleme, duyarlılık analizi ve öneri sistemleri verilebilir.

NAIVE BAYES REGRESYONU

P ( A | B ) = B olayı gerçekleştiğinde A olayının gerçekleşme olasılığı
P ( A ) = A olayının gerçekleşme olasılığı
P ( B | A ) = A olayı gerçekleştiğinde B olayının gerçekleşme olasılığı
P ( B ) = B olayının gerçekleşme olasılığı
Kaynakça:https://medium.com/@batubilgili1907.bb/naive-bayes-s%C4%B1n%C4%B1fland%C4%B1rma-6dad0795f825

Naive Bayes modelimizi oluşturalım.Transported değişkenini diğer tüm bağımsız değişkenlere göre tahmin edelim.Tahminlerimizi yapmak için Training_set’i kullanalım.Oluşturduğumuz lojistik regresyon üzerindeki tahminlerimizi Testing_set’ten Transported’ı çıkararak Testing_set üzerinde tahinimizi yapalım

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

y_pred değerimizin 0.5’ten büyük olup olmadığını kontrol edelim.Eğer tahmin değeri 0.5’ten büyükse 1 değilse 0 değeri atasın.

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

Modelimizin geçerliliğini test edelim.gercekdeğerlerim’le y_pred’i karşılaştıralım.

cm=table(gercekdegerler, y_pred)
cm
##               y_pred
## gercekdegerler   0   1
##              0 361 416
##              1  61 727

Kurduğum regresyona göre gerçekdegerlerim 0 olduğunda tahminim 338 kere insanların ölmediğini doğru 396 kere de yanlış tahmin etmişim.gerçekdegerlerim 1 olduğunda 688 kere insanların öldüğünü doğru 56 kere yanlış tahmin etmişim.

Bulduğum tahmini oranım şu şekilde

\[ (338+688)/ (338+688+396+56) \]

(338+688)/ (338+688+396+56)
## [1] 0.6941813

Tahminime göre yolcuların ~%70’i ölmüştür.

Naive Bayes regresyonumuzu Train_set için oluşturalım ve bağımlı modelimiz Transported ile bağımsız değişkenler arasındaki ilişkiyi bulalım.

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

Bulduğumuz lojistik regresyonumuzu test_set adında yeni bir veri setinde gözlemleyelim.

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

Test_set verisindeki tahmin değerimizin 0.5’ten büyük olup olmadığını kontrol edelim.Eğer tahmin değeri 0.5’ten büyükse True değilse False değeri atasın.

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

y_pred’i karaktere çevirelim ve adını Transported olarak değiştirelim.Test setimizin içindeki PassengerId’i de alalım ve PassengerId olarak adını değiştirelim.

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

Transported’ımızı vektör olarak değiştirelim.

Transported<-as.vector(Transported)

İki değişkeni birleştirelim.

submission <- cbind(PassengerId, Transported)

Submission verilerimizi tabloya dönüştürelim.

submission <- as.data.frame(submission)

Submission verilerimizi raporlayalım.

submission$Transported <- str_to_title(submission$Transported)

Raporladığımız Submission verilerimizi excel dosyasına aktaralım.

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

Kaggle Naıve Bayes Regresyon sonucum

Bu sonuca göre yaptığım regresyon tahminim ~%71 oranında doğrudur.

3.SVM REGRESYON NEDİR?

Destek Vektör Makineleri (SVM), düzlem üzerindeki noktaların bir doğru veya hiper düzlem ile ayrıştırılması ve sınıflandırılmasıdır.Küçük veya orta büyüklükteki veri setleri için uygundur. Ölçeğe duyarlıdır. Ölçek edilmesi gerekir.Hard Margin (kesin kenar) ve Soft Margin (yumuşak kenar) arasındaki dengeyi C ile kontrol edebiliriz. C büyüdükçe marj(kenar) daralır.Modelde aşırı uyum olursa C’nin azlatılması gerekir.2 boyutta açıklanamayan değişimleri boyut arttırarak çözüyormuş gibi yapılan hilelere Kernel Trick denir.2 boyutta açıklayamadığımız veri setimizi daha fazla boyutta açıklamak için kullanılan Kernel Trick metoduna Polynomial Kernel denir.Her bir noktanın belirli bir noktaya ne kadar benzediğini normal dağılım ile hesaplayan, ona göre sınıflandıran Kernel Trick metoduna RBF Kernel denir.Dağılım genişliğini kontrol ettiğimiz gamma değeri ne kadar küçükse dağılım o kadar geniş olur. Model aşırı uyumlu olmuşsa gamma değerini düşürmemiz, model yetersiz uyumlu olmuşsa gamma değerini yükseltmemiz gerekir.

Kaynakça:https://medium.com/deep-learning-turkiye/nedir-bu-destek-vekt%C3%B6r-makineleri-makine-%C3%B6%C4%9Frenmesi-serisi-2-94e576e4223e

SVM Linear

Svm Linear modelimizi oluşturalım.Transported değişkenini diğer tüm bağımsız değişkenlere göre tahmin edelim.Tahminlerimizi yapmak için Training_set’i kullanalım.Oluşturduğumuz lojistik regresyon üzerindeki tahminlerimizi Testing_set’ten Transported’ı çıkararak Testing_set üzerinde tahinimizi yapalım.Burada biz doğrusal regresonda doğru mu yanlış mı modelini oluşturuyoruz.

library(e1071)
fit_svm <- svm(Transported ~ ., data = training_set, 
               type = "C-classification",
               kernel = "linear")
preds <-predict(fit_svm, newdata = testing_set[-13], type = "raw")%>% 
  data.frame()

reds’imiz tek değişken verdiği için “.” kullanıyoruz.True ise 1 False ise 0 olsun.

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

Modelimizin geçerliliğini test edelim.gercekdeğerlerim’le y_pred’i karşılaştıralım.

cm = table (gercekdegerler, y_pred)
cm
##               y_pred
## gercekdegerler   0   1
##              0 574 203
##              1 127 661

Kurduğum regresyona göre gerçekdegerlerim 0 olduğunda tahminim 574 kere insanların ölmediğini doğru 203 kere de yanlış tahmin etmişim.gerçekdegerlerim 1 olduğunda 661 kere insanların öldüğünü doğru 127 kere yanlış tahmin etmişim.

Bulduğum tahmini oranım şu şekilde

(574+661)/(574+661+127+203)
## [1] 0.7891374

Regresyon tahminime göre yolcuların ~%79’u ölmüş, ~%21’i yaşamaktadır.

SVM Linear regresyonumuzu Train_set için oluşturalım ve bağımlı modelimiz olan Transported ile bağımsız değişkenler arasındaki ilişkiyi bulalım.

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

Bulduğumuz lojistik regresyonumuzu test_set adında yeni bir veri setinde gözlemleyelim.

Test_set verisindeki tahmin değerimizi karşılaştıralım.

y_pred = preds$.

y_pred’i karaktere çevirelim ve adını Transported olarak değiştirelim.Test setimizin içindeki PassengerId’i de alalım ve PassengerId olarak adını değiştirelim.

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

Transported’ımızı vektör olarak değiştirelim.

Transported<-as.vector(Transported)

İki değişkeni birleştirelim.

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

Submission verilerimizi tabloya dönüştürelim

submission <- as.data.frame(submission)

Submission’ı tablo haline getirelim.

submission$Transported <- str_to_title(submission$Transported)

Submission’ı Excel dosyasına çevirelim.

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

Kaggle SVM Linear Regresyon sonucum

Svm Radial

Svm Radial regresyonumuzu kuralım

library(e1071)
svm_ker_son = svm(Transported ~ ., data = training_set, 
               type = "C-classification",
               kernel = "radial")
preds <-predict(svm_ker_son, newdata = testing_set [-13], type = "raw")%>% 
  data.frame()
y_pred = preds$.
y_pred = ifelse(preds$.== TRUE, 1, 0)

Modelimizin geçerliliğini test edelim.

cm = table (gercekdegerler, y_pred)
cm
##               y_pred
## gercekdegerler   0   1
##              0 578 199
##              1 141 647

Bulduğum tahmini oranım şu şekildedir.

(578+647)/(578+647+141+199)
## [1] 0.7827476

Regresyon tahminime göre yolcuların ~%79’u ölmüş, ~%21’i yaşamaktadır.

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)

Submission’ımızı excel olarak kaydedilelim ve Kaggle gönderelim.

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

Kaggle SVM Radial Regresyon sonucum

4.DECISION TREES NEDİR?

Karar ağacı algoritması, veri madenciliği sınıflandırma algoritmalarından biridir.Önceden tanımlanmış bir hedef değişkene sahiplerdir. Yapıları itibariyle en tepeden en aşağı inen bir strateji sunmaktadırlar.Bir karar ağacı, çok sayıda kayıt içeren bir veri kümesini, bir dizi karar kuralları uygulayarak daha küçük kümelere bölmek için kullanılan bir yapıdır. Yani basit karar verme adımları uygulanarak, büyük miktarlardaki kayıtları, çok küçük kayıt gruplarına bölerek kullanılan bir yapıdır.

Karar Ağaçlarının Avantajları:

-Anlaması ve yorumlaması kolaydır. Kullanılan ağaç yapılar görselleştirilebilir.
-Az oranda bir veri hazırlığına ihtiyaç duyar. Fakat unutulmamalıdır ki bu model kayıp değerleri desteklememektedir.
-Kullanılan ağacın maliyeti, ağacı eğitmek için kullanılan veri noktalarının sayısıyla logaritmiktir.
-Hem sayısal hem de kategorik verileri işleyebilir.
-Çok çıktılı problemleri ele alabilmektedirler.
-İstatistiksel testler kullanılarak bir modelin doğrulanması mümkündür.
-Karar ağaçları, parametrik olmayan bir yöntem olarak düşünülebilir. Yani uzay dağılımı ve sınıflandırma yapısı hakkında bir yaklaşıma sahip değilledir.
Karar Ağaçlarının Dezavantajları:

-Veriyi iyi bir şekilde açıklamayan aşırı karmaşık ağaçlar üretilebilir. Bu durumda ağaç dallanması takip edilemeyebilir.
-Ezbere öğrenme yaşanabilir (“over-fitting”). Bu problemin çözümü için model parametrelere kısıtlamalar ve budama gibi yöntemler kullanılabilir. Budama işlemi, az sayıda nesneyi barındıran yaprak düğümlerin karar ağacı grafiğinden atılmasını ifade etmektedir 
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
library(caret)
## Zorunlu paket yükleniyor: lattice
## 
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
## 
##     lift

Bu analizde Transported’ın faktör olmasını istediği için Transported’ı faktöre çevirelim.

training_set$Transported <- as.factor(training_set$Transported)
testing_set$Transported <- as.factor(testing_set$Transported)
train_set$Transported <- as.factor(train_set$Transported)

Traininig_setteki tahminimize göre karar ağacımızı yorumlayalım.

fit_tree <- rpart::rpart(Transported ~ ., data = training_set)
summary(fit_tree)
## Call:
## rpart::rpart(formula = Transported ~ ., data = training_set)
##   n= 7128 
## 
##           CP nsplit rel error    xerror       xstd
## 1 0.43075184      0 1.0000000 1.0146976 0.01193121
## 2 0.03947616      1 0.5692482 0.5692482 0.01074406
## 3 0.01074053      4 0.4508197 0.4621255 0.01003280
## 4 0.01000000      5 0.4400791 0.4522329 0.00995640
## 
## Variable importance
##    CryoSleep          Spa       VRDeck  RoomService    FoodCourt ShoppingMall 
##           43           17           16           10            9            4 
##   HomePlanet 
##            1 
## 
## Node number 1: 7128 observations,    complexity param=0.4307518
##   predicted class=TRUE   expected loss=0.4963524  P(node) =1
##     class counts:  3538  3590
##    probabilities: 0.496 0.504 
##   left son=2 (4642 obs) right son=3 (2486 obs)
##   Primary splits:
##       CryoSleep    splits as  LRL,        improve=749.5328, (0 missing)
##       Spa          < 0.5    to the right, improve=426.7064, (0 missing)
##       RoomService  < 0.5    to the right, improve=425.9878, (0 missing)
##       VRDeck       < 0.5    to the right, improve=400.1223, (0 missing)
##       ShoppingMall < 0.5    to the right, improve=242.6838, (0 missing)
##   Surrogate splits:
##       Spa          < 0.5    to the right, agree=0.718, adj=0.191, (0 split)
##       FoodCourt    < 0.5    to the right, agree=0.700, adj=0.139, (0 split)
##       VRDeck       < 0.5    to the right, agree=0.696, adj=0.128, (0 split)
##       RoomService  < 0.5    to the right, agree=0.688, adj=0.105, (0 split)
##       ShoppingMall < 0.5    to the right, agree=0.683, adj=0.091, (0 split)
## 
## Node number 2: 4642 observations,    complexity param=0.03947616
##   predicted class=FALSE  expected loss=0.3358466  P(node) =0.6512346
##     class counts:  3083  1559
##    probabilities: 0.664 0.336 
##   left son=4 (1171 obs) right son=5 (3471 obs)
##   Primary splits:
##       RoomService < 346.5  to the right, improve=104.87510, (0 missing)
##       Spa         < 266.5  to the right, improve=103.04350, (0 missing)
##       Age         < 12.5   to the right, improve= 98.83228, (0 missing)
##       FoodCourt   < 668    to the left,  improve= 80.19505, (0 missing)
##       VRDeck      < 122.5  to the right, improve= 70.74991, (0 missing)
##   Surrogate splits:
##       HomePlanet splits as  RRLR,      agree=0.790, adj=0.169, (0 split)
##       kabinharfi splits as  RRRLRRRRR, agree=0.749, adj=0.004, (0 split)
## 
## Node number 3: 2486 observations
##   predicted class=TRUE   expected loss=0.1830249  P(node) =0.3487654
##     class counts:   455  2031
##    probabilities: 0.183 0.817 
## 
## Node number 4: 1171 observations
##   predicted class=FALSE  expected loss=0.1528608  P(node) =0.1642817
##     class counts:   992   179
##    probabilities: 0.847 0.153 
## 
## Node number 5: 3471 observations,    complexity param=0.03947616
##   predicted class=FALSE  expected loss=0.3975799  P(node) =0.4869529
##     class counts:  2091  1380
##    probabilities: 0.602 0.398 
##   left son=10 (1077 obs) right son=11 (2394 obs)
##   Primary splits:
##       Spa          < 266.5  to the right, improve=152.75830, (0 missing)
##       VRDeck       < 135.5  to the right, improve=124.06810, (0 missing)
##       Age          < 12.5   to the right, improve= 69.94343, (0 missing)
##       ShoppingMall < 627    to the left,  improve= 54.57723, (0 missing)
##       FoodCourt    < 1383.5 to the left,  improve= 46.18576, (0 missing)
##   Surrogate splits:
##       HomePlanet   splits as  RLRR,       agree=0.699, adj=0.031, (0 split)
##       kabinharfi   splits as  LRLRRRRRR,  agree=0.695, adj=0.018, (0 split)
##       FoodCourt    < 3197.5 to the right, agree=0.693, adj=0.010, (0 split)
##       VRDeck       < 9049   to the right, agree=0.692, adj=0.006, (0 split)
##       ShoppingMall < 7126   to the right, agree=0.690, adj=0.002, (0 split)
## 
## Node number 10: 1077 observations
##   predicted class=FALSE  expected loss=0.176416  P(node) =0.1510943
##     class counts:   887   190
##    probabilities: 0.824 0.176 
## 
## Node number 11: 2394 observations,    complexity param=0.03947616
##   predicted class=FALSE  expected loss=0.497076  P(node) =0.3358586
##     class counts:  1204  1190
##    probabilities: 0.503 0.497 
##   left son=22 (775 obs) right son=23 (1619 obs)
##   Primary splits:
##       VRDeck       < 233.5  to the right, improve=175.13870, (0 missing)
##       FoodCourt    < 2068.5 to the left,  improve= 51.10508, (0 missing)
##       HomePlanet   splits as  LRRL,       improve= 40.11959, (0 missing)
##       Age          < 7.5    to the right, improve= 33.93496, (0 missing)
##       ShoppingMall < 1540.5 to the left,  improve= 33.17331, (0 missing)
##   Surrogate splits:
##       FoodCourt   < 6922.5 to the right, agree=0.681, adj=0.014, (0 split)
##       kabinharfi  splits as  RRLRRRRRR,  agree=0.679, adj=0.009, (0 split)
##       Age         < 67.5   to the right, agree=0.678, adj=0.004, (0 split)
##       RoomService < 343    to the right, agree=0.677, adj=0.003, (0 split)
##       Spa         < 261.5  to the right, agree=0.677, adj=0.003, (0 split)
## 
## Node number 22: 775 observations,    complexity param=0.01074053
##   predicted class=FALSE  expected loss=0.2206452  P(node) =0.1087262
##     class counts:   604   171
##    probabilities: 0.779 0.221 
##   left son=44 (705 obs) right son=45 (70 obs)
##   Primary splits:
##       FoodCourt  < 3183.5 to the left,  improve=46.687680, (0 missing)
##       kabinharfi splits as  RRRLRLL-R,  improve=17.200040, (0 missing)
##       HomePlanet splits as  LRLL,       improve=14.334120, (0 missing)
##       VRDeck     < 1678.5 to the right, improve= 5.869436, (0 missing)
##       VIP        splits as  LRR,        improve= 5.834784, (0 missing)
## 
## Node number 23: 1619 observations
##   predicted class=TRUE   expected loss=0.3705991  P(node) =0.2271324
##     class counts:   600  1019
##    probabilities: 0.371 0.629 
## 
## Node number 44: 705 observations
##   predicted class=FALSE  expected loss=0.1659574  P(node) =0.09890572
##     class counts:   588   117
##    probabilities: 0.834 0.166 
## 
## Node number 45: 70 observations
##   predicted class=TRUE   expected loss=0.2285714  P(node) =0.009820426
##     class counts:    16    54
##    probabilities: 0.229 0.771
rpart.plot(fit_tree)

Ağacın en üst kısmı yolcuların CryoSleep’te yakalanıp yakalanmadığını gösteriyor.Eğer yolcular CryoSleep’te yakalanmışlarsa yani No yolundan devam edersek %35 oranında ölmüşler demektir.Eğer CryoSelep’te yakalanmamışlarsa yani Yes yolundan devam edersek RoomService almışlarsa ve bu tutar 347den fazla veya eşitse yolcuların %16sı ölmemişerdir.Eğer bu tutardan daha az almışlarsa %49 oranında ölmemişlerdir.Yolcular Spa almışlarsa ve bu tutar 267’den fazla veya eşitse %15 oranında ölmemişler, bu tutardan daha az alanlar ise %34 olasılıkla ölmemişlerdir.VrDeck almış ve bu tutar 234’ten fazla veya eşitse %11 oranında ölmüş ama almamışlarsa ölmüşler demektir.Aldığını varsaydığımızda Foodcourt alanlar %10 oranında ölmemişler almayanlar ise %1 oranında ölmüşlerdir.

preds= predict(fit_tree, newdata = testing_set[-13], type="class")
y_pred = ifelse(preds == TRUE, 1, 0)

Modelimizin geçerliliğini tahminimiz ve gercekdeğerlerimizle karşılaştıralım.

cm= table(gercekdegerler,y_pred)
cm
##               y_pred
## gercekdegerler   0   1
##              0 505 272
##              1 121 667

Bulduğum tahmini oranım şu şekilde

(505+667)/(505+667+272+121)
## [1] 0.7488818

Kurduğumuz regresyon tahminine göre ~%75 oranında yolcuların öldüğü görülüyor.

Train_sete göre karar ağacımızı yorumlayalı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.0148320 0.010803436
## 2 0.03406721      1 0.5675550 0.5675550 0.009719864
## 3 0.01000000      4 0.4653534 0.4734647 0.009161770
## 
## 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)
##       kabinharfi 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)
##       kabinharfi 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)
##       kabinharfi  splits as  RRLRRRRRR,   agree=0.714, adj=0.004, (0 split)
##       Age         < 68.5    to the right, 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)

CryoSleep almamış olanların %35’i ölmüşler alanlar ise %65 oranla ölmemişlerdir.Roomservice alanların %16’sı ölmemiş almanyanların ise %49 u ölmemişlerdir.Spa alanların %16’sı ölmemiş almayanların ise %33’ü ölmemişlerdir.VrDeck alanların ise %9 ölmemiş almayanların %23’ü ölmüşlerdir.

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 2)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)

Dosyamızı Excel olarak kaydedelim ve Kaggle tahminimizi yükleyelim.

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

5.RANDOM FOREST NEDİR?

Birden çok karar ağacı üzerinden her bir karar ağacını farklı bir gözlem örneği üzerinde eğiterek çeşitli modeller üretip, sınıflandırma oluşturmanızı sağlamaktadır.Kullanım kolaylığı ve esnekliği; hem sınıflandırma hem de regresyon problemlerini ele aldığı için benimsenmesini ve kullanımının yaygınlaşmasını hızlandırdı.Algoritmaya yönelik en beğenilen nokta ise; veri kümeniz üzerinde çeşitli modellerin oluşturulması ile kümenizi yeniden ve daha derin keşfetme imkanı sunmasıdır.

Algoritma;

-Analiz edilecek veri seti hazırlanır,
(Analiz edilecek küme oluşturulur, gerekli görülürse veri temizlemesi gerçekleştirilir.)
-Algoritma her bir örnek için karar ağacı oluşturur ve her bir karar ağacının tahmini değer sonucu oluşur,
-Tahmin sonucu oluşan her değer için oylama gerçekleştirilir,
*(Sınıflandırma problemi için Modu (Mode), Regresyon problemi için Ortalamayı (Mean))
-Son olarak algoritma son tahmin için en çok oylanan değeri seçerek sonuç oluşturur.
 adımları ile analiz gerçekleştirmektedir. 

Random Forest regresyonumzu kuralım.

fit_rf<- randomForest(Transported~ .,data = training_set)

Kuduğumuz regresyona göre en önemli değişkenimizin hangisi olduğunu görelim.

fit_rf$importance
##                MeanDecreaseGini
## HomePlanet            138.88357
## CryoSleep             339.47251
## kabinharfi            209.52281
## guvertebolgesi         61.34981
## Destination            74.99177
## Age                   264.10230
## VIP                    22.68856
## RoomService           353.61625
## FoodCourt             298.06067
## ShoppingMall          265.59232
## Spa                   387.76812
## VRDeck                365.12648
## aile                   41.70239

Sonucumuza göre en önemli değerler Spa,RoomService ve Vrdeck olduğu görülmektedir.

En önemli değişkenleri bir de grafik olarak görelim.

varImpPlot(fit_rf)

preds= predict(fit_rf, newdata = testing_set[-13], type = "class")
y_pred= ifelse(preds== TRUE,1,0)
cm = table (gercekdegerler, y_pred)
cm
##               y_pred
## gercekdegerler   0   1
##              0 580 197
##              1 145 643

Bulduğum tahmini oranım şu şekilde

(580+643)/(580+643+197+145)
## [1] 0.7814696

Random Forest regresyonumuza göre yaşayanlar ~%20 oranında ölenler ~%79 oranındadır.

fit_rf<- randomForest(Transported~ ., 
                      data = train_set)
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 2)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_rf.csv", row.names =FALSE, quote=FALSE)

Kaggle Random Forest Sonucum

Kaggle Random Forest Sonucum

Yüklediğimiz regresyonlardan Kaggleda elde ettiğimiz ; En iyi sonucumuzu veren modelimiz 0.80056(Kaggle sonucu) ile Lojistik Regresyon modelimiz en kötü sonucu ise 0.71101 (Kaggle sonucu) ile Naive Bayes Regresyon modelimiz vermiştir.Bu da bize geçerli modelimizi Svm Radial veya Decision Trees ile yapmanın daha iyi olacağını göstermektedir.

ödevin kaydetme tarhi depişirse diye ekledim. teşekkürelr