SPACESHIP TITANIC
UZAY GEMİSİ TİTANİK
Predict which passengers are transported to an alternate dimension
Hangi yolcuların alternatif bir boyuta taşınacağını tahmin edin.
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.
Kozmik bir gizemi çözmek için veri bilimi becerilerinize ihtiyaç duyulan 2912 yılına hoş geldiniz. Dört ışıkyılı uzaklıktan bir ileti aldık ve işler pek iyi görünmüyor.
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.
Uzay Gemisi Titanik, bir ay önce fırlatılan yıldızlararası bir yolcu gemisiydi. Gemide yaklaşık 13.000 yolcu bulunan gemi, güneş sistemimizdeki göçmenleri yakın yıldızların yörüngesinde bulunan yeni yaşanabilir üç dış gezegene taşımak üzere ilk yolculuğuna çıktı.
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!
Tedbirsiz Uzay gemisi Titanic, Alpha Centauri'yi ilk hedefine (kızgın 55 Cancri E) doğru giderken, gizlenmiş bir uzay-zaman anormalliğiyle çarpıştı. bir toz bulutunun içinde. 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ı!
To help rescue crews and retrieve the lost passengers, you are challenged to predict which passengers were transported by the anomaly using records recovered from the spaceship’s damaged computer system.
Kurtarma ekiplerine yardımcı olmak ve kayıp yolcuları geri almak için, uzay gemisinin hasarlı bilgisayar sisteminden elde edilen kayıtları kullanarak anormallik nedeniyle hangi yolcuların taşındığını tahmin etmeniz gerekiyor.
Help save them and change history!
Onları kurtarmaya ve geçmişi değiştirmeye yardım edin!
Veri setlerimiz olan Train ve Test’i yükleyelim.
Train datamızı yükleyelim.
## 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.
Yükleme sonucunda Train datamızda 8693 tane gözlem ve 14 tane değişkenimiz olduğunu görüyoruz.
Train datamızdaki gözlemlerin anlamları şöyledir:
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 datamızı yükleyelim.
## 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 sonucunda Test datamızda 4277 tane gözlem ve 13 tane değişkenimiz olduğunu görüyoruz.
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 .
Veri setlerindeki veri türlerimizi inceleyelim.
Train datamızdaki veri türlerimizi incelemek için str paketinden yardım alıyoruz.
## 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>
Test datamızdakiveri türlerimizi incelemek için str paketinden yardım alıyoruz.
## 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>
Veri setlerimizi araştıralım.Veri setlerimiz araştırmak için dataexplorer paketini yükleyelim ve create_report ile rapor oluşturalım.
library(DataExplorer)
Train Sonuçlarımız
Train datamızı araştırmak için create_report ile rapor oluşturalım.
create_report(train)
Basic Statistics (Temel İstatistikler)
Raw Counts (Ham Sayımlar)
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
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)
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
Univariate Distribution (Tek Değişkenli Dağılım) (continuous-Sürekli)
Histogram
Age histogramında 0 ile 80 yaş aralığında en çok 20'li yaşlarda insanların olduğu gözlemleniyor.
Fodcourt histogramında 0-30.000 fiyat aralığında çoğu kişinin yemeklere para harcamadığı gözlemleniyor.
RoomService histogramında 0-15.000 fiyat aralığında çoğu kişinin oda servisine para harcamadığı gözlemleniyor.
ShoppingMall histogramında 0-25.000 fiyat aralığında kişilerin çoğu alışveriş yapmadığı gözlemleniyor.
Spa histogramında spa kullanmayanların sayısı kullananlara göre daha fazla olduğu gözlemleniyor.
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 grafiğinde yolcular en çok Eart gezegeninden bindikleri gözlemleniyor.
CryoSleep yolcunun yolculuk süresince askıya alınmış animasyona alınmayı büyük oranda seçmediği gözlemleniyor.
Destination grafiğinde yolcular en çok TRAPPIST-1e durağında inecekleri gözlemleniyor.
VIP grafiğinde yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapmadığı gözlemleniyor.
Transported grafiğinde yolcuların yarısının yaşadığını yarısınında yaşamadığı tahmin edilmiştir.
QQ Plot (QQ Grafiği)
Warning: Removed 124 rows containing non-finite values (`stat_qq()`). (Uyarı: Sonlu olmayan değerler (`stat_qq()`) içeren 124 satır kaldırıldı.)
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 train datamızı küçültüyoruz ve küçülttüğümüz datanın raporunu tekrar alıyoruz.
library(DataExplorer)
create_report(traindatasınıküçültme1)
Küçülttüğümüz Train datasındaki korelasyonu inceleyelim.
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.
create_report(test)
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
Age histogramında 0 ile 80 yaş aralığında en çok 20'li yaşlarda insanların olduğu gözlemleniyor.
Foodcourt histogramında 0-30.000 fiyat aralığında çok az kişinin yemeklere para harcadığı ve bunun gelirle ilgili olduğu gözlemleniyor.
RoomService histogramında 0-15.000 fiyat aralığında çok az kişinin oda servisine para harcadığı gözlemleniyor.
ShoppingMall histogramında 0-25.000 fiyat aralığında kişilerin çoğu alışveriş yapmadığı gözlemleniyor.
Spa histogramında spaya ücret ödemek istemeyenlerin sayısı kullananlara göre daha fazla olduğu gözlemleniyor.
VRdeck histogramında VRdeck'e insanlar neredeyse hiç KİMSE para harcamayı tercih etmediği gözlemleniyor.
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)
HomePlanet grafiğinde yolcular birinci olarak Eart gezegeninden, ikinci olarak Europa gezegeninden üçüncü olarak Mars dördüncü olarak ise hangi gezegenden bindikleri belli olmayan'dan bindikleri gözlemleniyor.
CryoSleep yolcunun yolculuk süresince askıya alınmış animasyona alınmayı büyük oranda seçmediği çok az bir oranda seçtiği gözlemleniyor.
Destination grafiğinde yolcular en çok TRAPPIST-1e durağında ikinci olarak 55 Cancri e durağında inecekleri gözlemleniyor.
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)
Warning: Removed 138 rows containing non-finite values (`stat_qq()`).(Uyarı: Sonlu olmayan değerler (`stat_qq()`) içeren 138 satır kaldırıldı.)
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.
library(DataExplorer)
create_report(testdatasınıküçültme1)
Küçülttüğümüz Test datasındaki korelasyonu inceleyelim.
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 setlerimizin sayı değişkenlerinin istatiksel özetlerini alalım.
## ── 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
Train
Train veri çerçevesindeki sayısal değişkenlerin istatistik özetini alalım
## 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
##
##
##
##
## # 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şkenlerin istatistik özetini alalım.
## # 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
## # 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 PassengerId sütununu aile numarası ve aile sıraları olarak iki sütuna ayıralım.
Train datasındaki Ailenumarası ve ailesıra sütunlarını ön tarafa alalım.
Train datasındaki Kabin sütununu kabinharfi, kabinnumarası ve iskelebölgesi olarak üçe ayıralım.
Train datasındaki Kabinin sütununun yanına kabinharfi, kabinnumarası ve iskelebölgesi sütunlarını koyalım.
Train datasındaki Cabin sütununu silelim.
Test Datasındaki PassengerId sütununu aile numarası ve aile sıraları olarak iki sütuna ayıralım.
Test Datasındaki Ailenumarası ve ailesıra sütunlarını ön tarafa alalım.
Test Datasındaki Kabin sütununu kabinharfi, kabinnumarası ve iskelebölgesi olarak üçe ayıralım.
Test Datasındaki Kabinin sütununun yanına kabinharfi, kabinnumarası ve iskelebölgesi sütunlarını koyalım.
Test Datasındaki Cabin sütunlarını silelim.
Veri setlerimizdeki boşluk bulanan yerleri dolduralım.
Train
Train datasındaki Homeplanet değişkenindeki boşluk olan NA’ları dolduralım.
train <- train %>%
mutate(HomePlanet = case_when(
CryoSleep & (kabinharfi %in% c("G", "E")) ~ "MARS",
CryoSleep & kabinharfi %in% c("G", "E") ~ "EARTH",
TRUE ~ "EUROPA"))Homeplanet değişkenindeki boşluk olan NA’ların sıfırlandığını kontrol edelim.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 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 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi 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ındaki Age değişkenindeki boşluk olan NA’ları HomePlanet değişkenine göre ortalama yaş ile dolduralım.
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 edelim.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 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 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination chr 182 2.1 4 NA NA NA
## 10 Age dbl 0 0 87 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 CryoSleep’in üç seçeneği var bunlar True False ve Na.Bunlara tek tek bakmak zor oldğu için üçe ayırıyoruz.
CryoSleep için kontrolümüzü sağlıyoruz
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 NA NA NA
## 5 CryoSleep fct 0 0 3 NA NA NA
## 6 kabinharfi chr 199 2.3 9 NA NA NA
## 7 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination chr 182 2.1 4 NA NA NA
## 10 Age dbl 0 0 87 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.
Destination için kontrolümüzü sağlıyoruz
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 NA NA NA
## 5 CryoSleep fct 0 0 3 NA NA NA
## 6 kabinharfi chr 199 2.3 9 NA NA NA
## 7 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination fct 0 0 4 NA NA NA
## 10 Age dbl 0 0 87 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 VIP üç seçeneği var bunlar True False ve Na.Bunlara tek tek bakmak zor oldğu için üçe ayırıyoruz.
VIP için kontrolümüzü sağlıyoruz
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 NA NA NA
## 5 CryoSleep fct 0 0 3 NA NA NA
## 6 kabinharfi chr 199 2.3 9 NA NA NA
## 7 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination fct 0 0 4 NA NA NA
## 10 Age dbl 0 0 87 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 verisindeki RoomServicelar rakamlardan oluştuğu için boşluk olan NA ları gidecekleri gezegenlere göre ortalama ile dolduracağız.
train <- train %>%
group_by(Destination) %>%
mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))Roomservice için kontrolümüzü sağlıyoruz
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 NA NA NA
## 5 CryoSleep fct 0 0 3 NA NA NA
## 6 kabinharfi chr 199 2.3 9 NA NA NA
## 7 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination fct 0 0 4 NA NA NA
## 10 Age dbl 0 0 87 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 verisindeki FoodCourt’ta rakam ama ilk önce histogramını çıkararak boşluklara koyulacak en uygun rakamları görelim.
Histograma göre çok az kişi FoodCourt’a para harcadığını görünüyor.Bu yüzden boş olan yerlere sıfır koymak daha mantıklıdır.
FoodCourt için kontrolümüzü sağlıyoruz
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 NA NA NA
## 5 CryoSleep fct 0 0 3 NA NA NA
## 6 kabinharfi chr 199 2.3 9 NA NA NA
## 7 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination fct 0 0 4 NA NA NA
## 10 Age dbl 0 0 87 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 verisindeki ShoppingMall, Spa ve VRDeck’i bir arada boşluklarını sıfırlayalım.
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ırlandıklarını kontrol edelim.
## # A tibble: 18 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 chr 0 0 2 NA NA NA
## 5 CryoSleep fct 0 0 3 NA NA NA
## 6 kabinharfi chr 199 2.3 9 NA NA NA
## 7 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination fct 0 0 4 NA NA NA
## 10 Age dbl 0 0 87 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 verisindeki Name değişkeni bize herhangi bir bilgi vermediği için onu veriden çıkaralım.
Train verisindeki kabinharfi değişkeninde ki boşluk olan Na’ları da AddNa ile kategorileştirelim.
Kabinharfini kontrol edelim.
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 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 kabinnumarası chr 0 0 1818 NA NA NA
## 8 iskelebölgesi chr 0 0 3 NA NA NA
## 9 Destination fct 0 0 4 NA NA NA
## 10 Age dbl 0 0 87 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 numarası aynı olanlara 1 olmayanlara 0 verelim.
train$aile <- ifelse(duplicated(train$ailenumarası) | duplicated(train$ailenumarası, fromLast=TRUE), 1, 0)Train verisinde PassengerId’de tekrarlanan aile numaralarının ilk 20 satırına bakalım.
## # A tibble: 20 × 4
## PassengerId ailenumarası 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 kabinnumarasına ihtiyacımız kalmadığı için sütunları silelim.
Train verisinde kalan son değişkenlerimizi kontrol edelim.
## # 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 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 iskelebölgesi chr 0 0 3 NA NA NA
## 6 Destination fct 0 0 4 NA NA NA
## 7 Age dbl 0 0 87 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ındaki Homeplanet değişkenindeki boşluk olan NA’ları dolduralım.
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şkenindeki boşluk olan NA’ların sıfırlandığını kontrol edelim.
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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ındaki Age değişkenindeki boşluk olan NA’ları HomePlanet ve Destination değişkenine göre ortalama yaş ile dolduralım.
test <- test %>%
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 edelim.
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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ı yapıyoruz.
Cryosleep için kontrolümüzü sağlıyoruz
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 Destination içinde aynısını yapıyoruz.
Destination için kontrolümüzü sağlıyoruz
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 verimizdeki VIP üç seçeneği var bunlar True False ve Na.Bunlara tek tek bakmak zor oldğu için üçe ayırıyoruz.
VIP için kontrolümüzü sağlıyoruz
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 verisindeki RoomServicelar rakamlardan oluştuğu için boşluk olan NA ları gidecekleri gezegenlere göre ortalama ile dolduracağız.
test <- test %>%
group_by(Destination) %>%
mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))Roomservice için kontrolümüzü sağlıyoruz
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 verisindeki FoodCourt içinde boşluk olanları sıfır olarak değiştirelim.
Test verisindeki FoodCourt’ta rakam ama ilk önce histogramını çıkararak boşluklara koyulacak en uygun rakamları görelim.
FoodCourt için kontrolümüzü sağlıyoruz
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 verisindeki ShoppingMall, Spa ve VRDeck’i bir arada boşluklarını sıfırlayalım.
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ı kontrol edelim.
## # A tibble: 17 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 de bize herhangi bir bilgi vermediği için onu veriden çıkaralım.
Test verisindeki kabinharfi değişkeninde ki boşluk olan Na’ları da AddNa ile kategorileştirelim
Kabinharfini kontrol edelim.
## # A tibble: 16 × 8
## variable type na na_pct unique min mean max
## <chr> <chr> <int> <dbl> <int> <dbl> <dbl> <dbl>
## 1 ailenumarası 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 kabinnumarası chr 0 0 1506 NA NA NA
## 8 iskelebölgesi 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 verisindeki PassengerId’de aile numarası aynı olanlara 1 olmayanlara 0 verelim.
test$aile <- ifelse(duplicated(test$ailenumarası) | duplicated(test$ailenumarası, fromLast=TRUE), 1, 0)Test verisinde PassengerId’de tekrarlanan aile numaralarının ilk 20 satırına bakalım.
## # A tibble: 20 × 4
## PassengerId ailenumarası 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 numarasına, aileırasına ve kabinnumarasına ihtiyacımız kalmadığı için sütunları silelim.
Test verisinde kalan son değişkenlerimizi kontrol edelim.
## # 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 iskelebölgesi 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İNLERİMİZE BAŞLAYALIM
1. LOJİSTİK (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. Videodan Anladığım Notlar: Örnek olarak genelde boy kilo verilir. Bağımlı değişken evet- hayır yada 1-0 gibi kategorik tiptedir. Bağımlı değişken kategorik gruplardan oluşuyorsa kullanılır.Kategorik bağımlı değişken ile bağımsız değişken arasındaki ilişkiyi inceler. Çeşitleri: ikili Lojistik Regresyon:Örnek olarak bağımlı değişken kadın-erkek yada kazandı-kaybetti gibi ikili sınıflardan oluşur. Çoklu Lojistik Regresyon:Bağımlı değişken üç ve daha fazla sınıftan oluşuyorsa kullanılır. Sıralı Lojistik regresyon:Bağımlı değişken sıralı kategorilerden oluşur.Örneğin insan değişkeninin bebek, çocuk, genç, yaşlı şeklinde bir sıraya göre sınıflara ayrılması.
Yazı Kaynakçası:https://medium.com/@rmys.nzl/r-i%CC%87le-lojistik-regresyon-analizi-600e188d2f1e
Video Kaynakçalarım: 1.https://www.youtube.com/watch?v=K4arTc6DYGs 2.https://www.youtube.com/watch?v=0KKnqRdYDBc
Bu analizimizde Lojistik Regresyon çeşitlerinden “İkili Lojistik Regresyon” çeşidini kullanıyoruz.Çünkü insanların hayatta kalıp kalmadığını öğrenmeye çalııyoruz.
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.
Test 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 Test setimizden çıkaralım.
Modelin gerçek sonuçları elimizde olmadığı için Train versini 0.83 olarak traning_set ve 0.17’sini de testing_set olarak ikiye ayıralım.Daha sonra traning_set verisini testing_set üzerinde kullanarak tahminlerimizin gerçekle ne kadar uyumlu olup olmadığını gözlemleyeceğiz.
library(caTools)
set.seed(179)
split= sample.split(train_set$Transported, SplitRatio = 0.83)
training_set =subset (train_set, split ==TRUE)
testing_set =subset (train_set, split ==FALSE)Lojistik regresyon modelini tanımlayalım ve oluşturalım.Modelin bağımlı değişkenini “Transported” ve bağımsız değişkenlerin hepsini almak için “.” koyalım.Bağımlı değişkenimiz iki kategorili olduğu için binomial ile modelin olasılık dağılımını belirleyelim.Tahminlerimizi yapmak için Training_set’i kullanalım.
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Oluşturduğumuz lojistik regresyon üzerindeki tahminlerimizi Testing_set’ten Transported’ı çıkararak Testing_set üzerinde tahinimizi yapalım.
## 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ğ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
gerçekdegerlerim eğer Testing_set’indeki Tansported değerlerimiz True ise 1 False ise 0 olarak atasın.
Modelimizin geçerliliğini test edelim.Yani gercek değelerimle tahminizi karşılaştıralım.
## tahminim
## gercekdegerlerim 0 1
## 0 548 186
## 1 127 617
Kurduğum regresyona göre gerçekdegerlerim 0 olduğunda tahminim 548 kere insanların ölmediğini doğru 186 kere de yanlış tahmin etmişim.gerçekdegerlerim 1 olduğunda 617 kere insanların öldüğünü doğru 127 kere yanlış tahmin etmişim. Bulduğum tahmini oranım şu şekilde
## [1] 0.7882273
Tahminime göre yolcuların ~%79’u ölmüştür.
Lojistik 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.
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Bulduğumuz lojistik regresyonumuzu test_set adında yeni bir veri setinde gözlemleyelim.
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.
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’ımızı vektör olarak değiştirelim.
İki değişkeni birleştirelim.
Submission verilerimizi tabloya dönüştürelim.
Raporlama yapabilmek için stringr paketini yükleyelim.
Submission verilerimizi raporlayalım.
Raporladığımız Submission verilerimizi excel dosyasına aktaralım.
Kaggle Logistic Regresyon sonucum
Bu sonuca göre yaptığım tahmin %80 oranında doğrudur.
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.
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ığı
Video Notlarım: Naive Bayes genel olarak koşullu olasılıklar üzerine kurulmuş bir algoritmadır.Genel olarak bir sınıflandırma olarak kullanılması ve sayılabilir veriler üzerinde kullanılması daha kolaydır. Örnek olarak bir kişinin grip olup olmadığını anlamak için kullanabiliriz.Bir kişinin burun akıntısı, üşüme, ateş ve baş ağrısı verilerine bakarak grip olup olmadığını tahmin etmeye çalırız. Burun akıntısı, üşüme, ateş ve baş ağrısı bizim eğitim setimiz, tahmin ettiğimiz yer ise test setimiz olur.
Yazı Kaynakçam:https://medium.com/@batubilgili1907.bb/naive-bayes-s%C4%B1n%C4%B1fland%C4%B1rma-6dad0795f825
Video Kaynakçalarım: https://www.youtube.com/watch?v=uJ0eDLx4zr0 https://www.youtube.com/watch?v=5zIK_h9GhFk
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.
Modelimizin geçerliliğini test edelim.gercekdeğerlerim’le y_pred’i karşılaştıralım.
## y_pred
## gercekdegerlerim 0 1
## 0 338 396
## 1 56 688
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
## [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.
Bulduğumuz lojistik regresyonumuzu test_set adında yeni bir veri setinde gözlemleyelim.
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’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’ımızı vektör olarak değiştirelim.
İki değişkeni birleştirelim.
Submission verilerimizi tabloya dönüştürelim.
Submission verilerimizi raporlayalım.
Raporladığımız Submission verilerimizi excel dosyasına aktaralım.
Kaggle Naıve Bayes Regresyon sonucum
Bu
sonuca göre yaptığım regresyon tahminim ~%72 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.
Video Notlarım:
Bu yöntem sınıflandırmayı doğrusal ve doğrusal olmayan bir fonksiyon yardımıyla yerine getirir.Veriyi birbirinden ayırmak için en uygun fonksiyonun tahmin edilmesi esasına dayanır.Problemi ilk öBir doğru yardımıyla iki sınıf birbirinden ayrılır.İki sınıf arasındaki en fazla aralığı olan çizgiyi tercih eder.Bu da bize daha doğru bir sonuç elde etmemize olanak sağlıyor..Bu sınıflardan birincisine evet ikincisine hayır diye ikiye ayır.Karar değişkeni ilk başta evet ise o kararı ver eğer hayırsa o değişkeni tekrar evet hayır şeklinde ikiye böl diye devam eder.Yani böl parçala yönet taktiğini kullanır.Regresyonlarda kullanırken elimizdeki verilerden yola çıkarak sonraki veriyi tahmin etmeye çalışıyoruz.
Yazı Kaynakçam:https://medium.com/deep-learning-turkiye/nedir-bu-destek-vekt%C3%B6r-makineleri-makine-%C3%B6%C4%9Frenmesi-serisi-2-94e576e4223e
Video Kaynakçalarım: https://www.youtube.com/watch?v=SIU_GWaEiIs https://www.youtube.com/watch?v=yGQatyHIusA https://www.youtube.com/watch?v=kHDPVC3WsTg
SVM Lineer
Video Notlarım: Bağımlı değişken ile bağımsız değişken arasında doğrusal bir ilişki vardır. Bir sabit ve birden fazla katsayı bağımsız değişkenlerinden oluşur.Katsayılar en küçük kareler yöntem ile bulunur.Bu yöntemle tahmin edilen bağımlı değişkendeki hatalar minimize edilir.
Svm Lineer 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()Preds’imiz tek değişken verdiği için “.” kullanıyoruz.True ise 1 False ise 0 olsun.
Modelimizin geçerliliğini test edelim.gercekdeğerlerim’le y_pred’i karşılaştıralım.
## y_pred
## gercekdegerlerim 0 1
## 0 535 199
## 1 116 628
Kurduğum regresyona göre gerçekdegerlerim 0 olduğunda tahminim 53 kere insanların ölmediğini doğru 199 kere de yanlış tahmin etmişim.gerçekdegerlerim 1 olduğunda 628 kere insanların öldüğünü doğru 116 kere yanlış tahmin etmişim.
Bulduğum tahmini oranım şu şekilde
## [1] 0.7868742
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.
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’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’ımızı vektör olarak değiştirelim.
İki değişkeni birleştirelim.
Submission verilerimizi tabloya dönüştürelim.
Submission’ı tablo haline getirelim.
Submission’ı Excel dosyasına çevirelim.
Kaggle SVM Linear Regresyon sonucum
Tahmin ettiğim oran % 0.786 iken Kaggle’da % 0.794 olması modelimin geçerliliğin varsayılabileceğini gösteriyor.
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()Modelimizin geçerliliğini test edelim.
## y_pred
## gercekdegerlerim 0 1
## 0 540 194
## 1 129 615
Bulduğum tahmini oranım şu şekilde
## [1] 0.7814614
Regresyon tahminime göre yolcuların ~%79’u ölmüş, ~%21’i yaşamaktadır.
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 2)
Submission’ımızı excel olarak kaydedilelim ve Kaggle gönderelim.
Kaggle SVM Radial Regresyon sonucum
Kaggle sonucuna göre yaptığım regresyon %80 oranında doğru sonuç vermiştir.
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
Video Notlarım: Karar ağaçları genellikle yukarıdan aşağıya doğru okunur.İfelse kuralı yani birşey olduğunda diğeri oluyor mu gibi kuralları işleterek aşağı doğru ulaşmaya çalışırız.Her nitelik bir düğüm tarafından temsil ediliyor.Şekil itibariyle ağaca benzediği için ağaç tabanlı algoritma denir.Sınıflandırmalarda kullanımı yaygındır.Kök düğümünün belirlenmesi karar ağacının verimliliğini etkiler.Yani karar ağacının ne kadar iyi tahmin etiğini doğrudan kök düğümü etkiler.Kök düğümü dalları dallarda yaprakları oluşturur.
Örneğin bir miktar paramız var ya bunula bakkal açıcaz ya da bankaya yatırıcaz.İlk durumda 100 tl kazırken ikinci durumda 10 tl kazandığımızı varsayalım.Bu durumda herkes bakkal açmak isteyecektir çünkü bankanın getirisinden daha fazla getirisi vardır.Bakkal açanların her on tane kişiden 3’ü kazanıyor 7 tanesi ise iflas ediyor.Bankaya yatıranların ise 9 kişisi başarılı bir kişi başarısız oluyor.Bakkal açıldığında iflas edenler anaparalarını da kaybetikleri için zararları büyük oluyor.Bunun gösterimini karar ağaçları kullanarak yapabiliriz.
Yazı Kaynakçam:https://medium.com/@k.ulgen90/makine-%C3%B6%C4%9Frenimi-b%C3%B6l%C3%BCm-5-karar-a%C4%9Fa%C3%A7lar%C4%B1-c90bd7593010
Video Kaynakçalarım: https://www.youtube.com/watch?v=fxHeEWRY9P8 https://www.youtube.com/watch?v=t0Qw4Fm6yeM
## 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
## 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.
## Call:
## rpart::rpart(formula = Transported ~ ., data = training_set)
## n= 7215
##
## CP nsplit rel error xerror xstd
## 1 0.43004747 0 1.0000000 1.0000000 0.011859657
## 2 0.03946756 1 0.5699525 0.5699525 0.010683467
## 3 0.01061156 4 0.4515498 0.4607651 0.009962127
## 4 0.01000000 5 0.4409383 0.4537839 0.009908550
##
## Variable importance
## CryoSleep HomePlanet Spa VRDeck RoomService FoodCourt
## 37 18 14 13 9 8
##
## Node number 1: 7215 observations, complexity param=0.4300475
## predicted class=TRUE expected loss=0.4963271 P(node) =1
## class counts: 3581 3634
## probabilities: 0.496 0.504
## left son=2 (4698 obs) right son=3 (2517 obs)
## Primary splits:
## CryoSleep splits as LRL, improve=756.3125, (0 missing)
## Spa < 0.5 to the right, improve=428.8224, (0 missing)
## RoomService < 0.5 to the right, improve=425.8342, (0 missing)
## VRDeck < 0.5 to the right, improve=402.2598, (0 missing)
## ShoppingMall < 0.5 to the right, improve=243.2345, (0 missing)
## Surrogate splits:
## HomePlanet splits as LR, agree=0.827, adj=0.504, (0 split)
## Spa < 0.5 to the right, agree=0.718, adj=0.192, (0 split)
## FoodCourt < 0.5 to the right, agree=0.699, adj=0.138, (0 split)
## VRDeck < 0.5 to the right, agree=0.697, adj=0.130, (0 split)
## RoomService < 0.5 to the right, agree=0.688, adj=0.107, (0 split)
##
## Node number 2: 4698 observations, complexity param=0.03946756
## predicted class=FALSE expected loss=0.3361005 P(node) =0.6511435
## class counts: 3119 1579
## probabilities: 0.664 0.336
## left son=4 (1184 obs) right son=5 (3514 obs)
## Primary splits:
## RoomService < 346.5 to the right, improve=106.28710, (0 missing)
## Spa < 266.5 to the right, improve=102.95560, (0 missing)
## Age < 12.5 to the right, improve= 99.37744, (0 missing)
## FoodCourt < 668 to the left, improve= 78.79837, (0 missing)
## VRDeck < 122.5 to the right, improve= 71.85152, (0 missing)
## Surrogate splits:
## kabinharfi splits as RRRLRRRRR, agree=0.749, adj=0.004, (0 split)
## Age < 78 to the right, agree=0.748, adj=0.002, (0 split)
##
## Node number 3: 2517 observations
## predicted class=TRUE expected loss=0.1835518 P(node) =0.3488565
## class counts: 462 2055
## probabilities: 0.184 0.816
##
## Node number 4: 1184 observations
## predicted class=FALSE expected loss=0.1528716 P(node) =0.1641026
## class counts: 1003 181
## probabilities: 0.847 0.153
##
## Node number 5: 3514 observations, complexity param=0.03946756
## predicted class=FALSE expected loss=0.3978372 P(node) =0.4870409
## class counts: 2116 1398
## probabilities: 0.602 0.398
## left son=10 (1094 obs) right son=11 (2420 obs)
## Primary splits:
## Spa < 266.5 to the right, improve=153.20320, (0 missing)
## VRDeck < 135.5 to the right, improve=125.33670, (0 missing)
## Age < 12.5 to the right, improve= 70.35434, (0 missing)
## ShoppingMall < 627 to the left, improve= 57.46630, (0 missing)
## FoodCourt < 1383.5 to the left, improve= 45.17312, (0 missing)
## Surrogate splits:
## kabinharfi splits as LRLRRRRRR, agree=0.696, adj=0.024, (0 split)
## FoodCourt < 3197.5 to the right, agree=0.692, adj=0.009, (0 split)
## VRDeck < 9049 to the right, agree=0.691, adj=0.007, (0 split)
## ShoppingMall < 7126 to the right, agree=0.689, adj=0.002, (0 split)
## VIP splits as RLR, agree=0.689, adj=0.001, (0 split)
##
## Node number 10: 1094 observations
## predicted class=FALSE expected loss=0.178245 P(node) =0.1516286
## class counts: 899 195
## probabilities: 0.822 0.178
##
## Node number 11: 2420 observations, complexity param=0.03946756
## predicted class=FALSE expected loss=0.4971074 P(node) =0.3354123
## class counts: 1217 1203
## probabilities: 0.503 0.497
## left son=22 (780 obs) right son=23 (1640 obs)
## Primary splits:
## VRDeck < 233.5 to the right, improve=177.74620, (0 missing)
## FoodCourt < 2068.5 to the left, improve= 50.61732, (0 missing)
## ShoppingMall < 1540.5 to the left, improve= 34.70316, (0 missing)
## Age < 7.5 to the right, improve= 34.32618, (0 missing)
## kabinharfi splits as RRRRLLLRR, improve= 20.58745, (0 missing)
## Surrogate splits:
## FoodCourt < 6922.5 to the right, agree=0.682, adj=0.014, (0 split)
## kabinharfi splits as RRLRRRRRR, agree=0.681, adj=0.009, (0 split)
## Age < 67.5 to the right, agree=0.679, adj=0.004, (0 split)
## RoomService < 343 to the right, agree=0.679, adj=0.003, (0 split)
## Spa < 261.5 to the right, agree=0.679, adj=0.003, (0 split)
##
## Node number 22: 780 observations, complexity param=0.01061156
## predicted class=FALSE expected loss=0.2192308 P(node) =0.1081081
## class counts: 609 171
## probabilities: 0.781 0.219
## left son=44 (710 obs) right son=45 (70 obs)
## Primary splits:
## FoodCourt < 3183.5 to the left, improve=46.897930, (0 missing)
## kabinharfi splits as RRRLRLL-R, improve=17.488260, (0 missing)
## VIP splits as LRR, improve= 5.894872, (0 missing)
## VRDeck < 1678.5 to the right, improve= 5.828403, (0 missing)
## ShoppingMall < 2037 to the left, improve= 5.681097, (0 missing)
##
## Node number 23: 1640 observations
## predicted class=TRUE expected loss=0.3707317 P(node) =0.2273042
## class counts: 608 1032
## probabilities: 0.371 0.629
##
## Node number 44: 710 observations
## predicted class=FALSE expected loss=0.1647887 P(node) =0.0984061
## class counts: 593 117
## probabilities: 0.835 0.165
##
## Node number 45: 70 observations
## predicted class=TRUE expected loss=0.2285714 P(node) =0.00970201
## class counts: 16 54
## probabilities: 0.229 0.771
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.
Modelimizin geçerliliğini tahminimiz ve gercekdeğerlerimizle karşılaştıralım.
## y_pred
## gercekdegerlerim 0 1
## 0 477 257
## 1 114 630
Bulduğum tahmini oranım şu şekilde
## [1] 0.7489851
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.
## 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.4725377 0.009155549
##
## Variable importance
## CryoSleep HomePlanet Spa VRDeck RoomService FoodCourt
## 38 19 14 13 10 6
##
## 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:
## HomePlanet splits as LR, agree=0.825, adj=0.500, (0 split)
## 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)
##
## 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:
## 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:
## 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)
## ShoppingMall < 7126 to the right, agree=0.671, adj=0.001, (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)
## ShoppingMall < 1540.5 to the left, improve= 38.47446, (0 missing)
## Age < 7.5 to the right, improve= 36.46439, (0 missing)
## kabinharfi splits as LRRRLLLRR, improve= 27.25812, (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
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.
Dosyamızı Excel olarak kaydedelim ve Kaggle tahminimizi yükleyelim.
Kaggle Decision Trees Regresyon sonucum
Tahminimizde ki oranımız ~%75 iken Kaggle göre doğru tahminimiz %80 olduğu görülmektedir.
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.
Video Notlarım: Karar ağaçlarını geliştirilmiş bir versiyonudur.Karar ağaçlarından farkı eğitim modelini oluştururken tek bir ağaç oluşturulur.Burada ise öznitelikler arasındanb rastgele seçerek farklı farklı dallanma alternatifleri ile birden fazla ağaç oluşturur.Burada ağaçların çokluğu en yüksek ve eğitim test doğruluğunu sağlayan ağaç tahmin probleminin çözümünde kullanılıyor. Dolayısıyla tek bir ağaç içinde yapılan tahminlere göre birden fazla ağaç arasında yapılan tahmin daha yüksek doğruluk oranı verdiği için Random Frest tercih ediliyor.
Yazı Kaynakçam:https://medium.com/data-science-tr/makine-%C3%B6%C4%9Frenmesi-dersleri-5-bagging-ve-random-forest-2f803cf21e07
Video Kaynakçalarım: https://www.youtube.com/watch?v=Vley2U8cE94 https://www.youtube.com/watch?v=cdIDcPeOwg8
Random Forest regresyonumzu kuralım.
Kuduğumuz regresyona göre en önemli değişkenimizin hangisi olduğunu görelim.
## MeanDecreaseGini
## HomePlanet 39.83407
## CryoSleep 345.36529
## kabinharfi 225.27041
## iskelebölgesi 58.70838
## Destination 74.62152
## Age 251.70692
## VIP 22.36184
## RoomService 382.74795
## FoodCourt 308.18095
## ShoppingMall 262.69947
## Spa 400.14327
## VRDeck 361.47966
## aile 40.91830
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.
## y_pred
## gercekdegerlerim 0 1
## 0 552 182
## 1 125 619
Bulduğum tahmini oranım şu şekilde
## [1] 0.7922869
Random Forest regresyonumuza göre yaşayanlar ~%20 oranında ölenler ~%80 oranındadır.
Kaggle Random Forest Regresyon sonucum
Kaggle sonucum ve benim tahmin ettiğim oran birbirine çok yakın olduğu görülüyor.
KAGGLE TÜM GÖNDERİM SONUÇLARIM
Yüklediğim regresyonlardan Kaggleda elde ettiğimiz ; En iyi sonucumuzu veren modelimiz 0.80056(Kaggle sonucu) ile Lojistik Regresyon modelimiz en kötü sonucu ise 0.71451 (Kaggle sonucu) ile Naive Bayes Regresyon modelimiz vermiştir.Bu da bize geçerli modelimizi Lojistik Regresyon ile yapmanın daha iyi olacağını göstermektedir.