Uzay Gemisi Titanik

Tanım:

Hangi yolcuların alternatif bir boyuta taşınacağını tahmin edinKozmik 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ı!

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.

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.
View(train)

Veri Kümesi Açıklaması:

Bu yarışmada göreviniz , Uzay Gemisi Titanik’in uzay-zaman anomalisiyle çarpışması sırasında bir yolcunun alternatif bir boyuta taşınıp taşınmadığını tahmin etmektir . Bu tahminleri yapmanıza yardımcı olmak için size geminin hasarlı bilgisayar sisteminden kurtarılan bir dizi kişisel kayıt veriliyor.

Dosya ve Veri Alanı Açıklamaları

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

2- 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

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

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

5- Cabin- Yolcunun kaldığı kabin numarası. deck/num/sideİskele sideveya PSancak formunu alır.

6- Destination- Yolcunun ineceği gezegen.

7- Age- Yolcunun yaşı.

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

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

10- Name- Yolcunun adı ve soyad.

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

12- test.csv - Yolcuların geri kalan üçte birinin (~4300) kişisel kayıtları, test verisi olarak kullanılacak. TransportedGöreviniz bu setteki yolcular için değerini tahmin etmektir.

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>

str(train) kodu:

“structure” (yapı) kısaltmasıdır ve genellikle bir veri çerçevesinin yapısını incelemek için kullanılır. Bu kod, belirli bir veri çerçevesinin içeriği ve yapısı hakkında genel bir bilgi sağlar.

str(train) kodunun yaptığı bazı şeyler:

Veri Çerçevesinin Yapısı: str fonksiyonu, veri çerçevesinin temel yapısını (structure) gösterir. Bu, veri çerçevesindeki değişkenlerin adlarını ve türlerini içerir.

Veri Çerçevesindeki Değişkenlerin Türleri: Her bir değişkenin türü (integer, character, factor, vb.) str tarafından gösterilir.

İlk Gözlemler: Veri çerçevesinin başındaki birkaç gözlemi gösterir.

library(DataExplorer)

DataExplorer kodu:

Paketi genellikle veri setinizdeki temel istatistikleri görüntülemenize, eksik veri analizi yapmanıza, değişkenler arasındaki ilişkileri incelemenize ve daha birçok veri keşfi işlemi yapmanıza yardımcı olur.

create_report(train)
## 
## 
## processing file: report.rmd
## 
  |                                           
  |                                     |   0%
  |                                           
  |.                                    |   2%                                 
  |                                           
  |..                                   |   5% [global_options]                
  |                                           
  |...                                  |   7%                                 
  |                                           
  |....                                 |  10% [introduce]                     
  |                                           
  |....                                 |  12%                                 
  |                                           
  |.....                                |  14% [plot_intro]                    
  |                                           
  |......                               |  17%                                 
  |                                           
  |.......                              |  19% [data_structure]                
  |                                           
  |........                             |  21%                                 
  |                                           
  |.........                            |  24% [missing_profile]               
  |                                           
  |..........                           |  26%                                 
  |                                           
  |...........                          |  29% [univariate_distribution_header]
  |                                           
  |...........                          |  31%                                 
  |                                           
  |............                         |  33% [plot_histogram]                
  |                                           
  |.............                        |  36%                                 
  |                                           
  |..............                       |  38% [plot_density]                  
  |                                           
  |...............                      |  40%                                 
  |                                           
  |................                     |  43% [plot_frequency_bar]            
  |                                           
  |.................                    |  45%                                 
  |                                           
  |..................                   |  48% [plot_response_bar]             
  |                                           
  |..................                   |  50%                                 
  |                                           
  |...................                  |  52% [plot_with_bar]                 
  |                                           
  |....................                 |  55%                                 
  |                                           
  |.....................                |  57% [plot_normal_qq]                
  |                                           
  |......................               |  60%                                 
  |                                           
  |.......................              |  62% [plot_response_qq]              
  |                                           
  |........................             |  64%                                 
  |                                           
  |.........................            |  67% [plot_by_qq]                    
  |                                           
  |..........................           |  69%                                 
  |                                           
  |..........................           |  71% [correlation_analysis]          
  |                                           
  |...........................          |  74%                                 
  |                                           
  |............................         |  76% [principal_component_analysis]  
  |                                           
  |.............................        |  79%                                 
  |                                           
  |..............................       |  81% [bivariate_distribution_header] 
  |                                           
  |...............................      |  83%                                 
  |                                           
  |................................     |  86% [plot_response_boxplot]         
  |                                           
  |.................................    |  88%                                 
  |                                           
  |.................................    |  90% [plot_by_boxplot]               
  |                                           
  |..................................   |  93%                                 
  |                                           
  |...................................  |  95% [plot_response_scatterplot]     
  |                                           
  |.................................... |  98%                                 
  |                                           
  |.....................................| 100% [plot_by_scatterplot]           
## output file: C:/Users/pc/Desktop/Final Projesi/report.knit.md
## "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/pandoc" +RTS -K512m -RTS "C:\Users\pc\Desktop\FINALP~1\REPORT~1.MD" --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc37b419216f1c.html --lua-filter "C:\Users\pc\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\pc\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\latex-div.lua" --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template "C:\Users\pc\AppData\Local\R\win-library\4.3\rmarkdown\rmd\h\default.html" --no-highlight --variable highlightjs=1 --variable theme=yeti --mathjax --variable "mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" --include-in-header "C:\Users\pc\AppData\Local\Temp\RtmpGaB36k\rmarkdown-str37b440cf767d.html"
## 
## Output created: report.html

Create_report kodu

Veri setinin genel özelliklerini, temel istatistikleri, eksik veri analizini, değişkenler arasındaki ilişkileri, ve belki de grafikleri içeren bir rapor oluşturur. Veri setinin yapısını daha iyi anlamanıza ve analiz sürecini hızlandırmayı sağlar.

Temel İstatistikler

Ham Sayımlar

İsim Değer Satırlar 8,693 Sütunlar 14 Ayrık sütunlar 8 Sürekli sütunlar 6 Tüm eksik sütunlar 0 Eksik gözlemler 2,324 Satırları Tamamla 6,606 Toplam gözlemler 121,702

Yüzdeler

Grafiği solunda yer alan ölçülerin adlarını ifade etmektedir.

Ölçülerde ilk olarak karşımıza ayrık sütunlar yüzdesi bizi karşımakta Ayrık sütunlar yüzdesi %57.1 olarak karşımıza çıkmaktadır.

Sütunların ikinci kısmını oluşturan sürekli sütunların ise oranının %42.9 olarak gözlemlenmektedir.

Burada arık sütunlarının sürekli sütunlara göre daha fazla olduğu gözlemlenmektedir.

Eksik sütunların değerinin %0 olmasını anlamı ise eksik sütun olmadığını gösterir.

“Complete rows” ifadesi genellikle veri setindeki satırların tam ve eksiksiz olarak doldurulmuş olup olmadığını belirtir. Yani, bir satırın tüm değişkenleri için bilgi içerdiği durumları ifade eder. Toplam satırların içinde hangi yüzde oranında tam ve eksiksiz bilgi içeren satırların bulunduğunu gösterir.

Complete row yüzdesi %76.0’dır. %76 yüksek bir yüzdeliktir.veri setinde çoğu satırın eksiksiz bilgiye sahiptir.

“Missing observations” ifadesi, bir yüzde grafiğinde genellikle eksik değerlere sahip olan gözlemlerin yüzde oranını ifade eder. Yani, veri setindeki herhangi bir değişkenin eksik (NaN veya NA) değerlere sahip olan gözlemleri temsil eder.

Bu ifade, eksik değerlerin veri setinde ne kadar yaygın olduğunu gösterir. Eksik gözlemler, veri analizi ve modelleme süreçlerinde dikkate alınması gereken önemli bir konudur. Eksik değerlere sahip gözlemler, analiz sonuçlarını etkileyebilir ve eksik veri yönetimi, doğru sonuçlar elde etmek için önemlidir.

“missing observations” yüzde grafiği, herhangi bir değişkenin eksik gözlemlerinin toplam gözlem sayısı içindeki yüzde oranını gösterir. Bu oranın yüksek olması, eksik veri sorunlarının önemli olabileceğini gösterir.

Bizim yüzdelik oranımız ise %1.9’dur.

Eksik Veri Profili

Eksik veri profili grafiği genellikle eksik değerlerin değişkenlere göre dağılımını görsel olarak temsil eden bir grafiktir. Bu grafikte, her bir değişken için eksik değerlerin yüzdesini gösteren bir çubuk veya çizgi grafiği kullanılır. Bu, her değişkenin eksik değerlerinin oranını görmemize olanak tanır.

Eksik veri profili grafiğinde eksik değerlerin yüzdesini incelediğinizde, her bir değişkenin eksik değer oranının belirli bir aralıkta (band) olduğunu gözlemleyebiliriz.

Bu, veri setindeki değişkenler arasında eksik veri durumlarının benzer bir şekilde dağıldığını veya farklılık gösterdiğini anlamak için kullanılabilir. Bu bilgi, eksik veri yönetimi stratejilerini belirlemede ve eksik değerlerin etkisini değerlendirmede yardımcı olabilir.

1.Tranported yüzdelik oranı %0’dır.Transported üzerinde eksik bilgi bulunmamaktadır.

2.PassengerId yüzdelik oranı %0’dır. PassengerId üzerinde transported’da görüldüğü gibi eksik bilgi yoktur.

3.Age yüzdelik oranı %2.06’dır. Yolcuların yaşına bakıldığında eksik bilgiler bulunmaktadır.

4.RoomService yüzdelik oranı %2.08’dir. Yolcuların Uzay Gemisi Titanic’in birçok lüks olanağının her birinde fatura ettiği tutarda da eksik bilgiler bulunmaktadır

5.Destination yüzdelik oranı %2.09’dur. Yolcuların ineceği gezegenlerde de eksik bilgiler bulunmaktadır.

6.Spa yüzdelik oranı %2.11’dir.

7.FoodCourt yüzdelik oranı %2.11’dir.

8.VRDeck yüzdelik oranı %2.16’dır.

9.Cabin yüzdelik oranı %2.29’dur.Yolcuların kaldığı kabin numaralarında da eksik bilgilere rastlanmaktadır.

10.Name yüzdelik oranı %2.3’tür.Yolcuların adı ve soyadında da eksik bilgiler bulunmaktadır.

11.HomePlanet yüzdelik oranı %2.31’dir.Yolcuların ayrıldığı gezegen, genellikle daimi ikamet ettikleri gezegenlerdede eksik bilgiler bulunmaktadır.

12.VIP yüzdelik oranı %2.34’tür.Yolcuların yolculuk sırasında özel VIP hizmeti için ödeme yapıp yapmadığı hakkında eksik bilgiler vardır.

13.ShoppingMall yüzdelik oranı %2.39’dur.

  1. CryoSleep yüzdelik oranı %2.5’tir.Yolcuların yolculuk süresince askıya alınmış animasyona alınmayı seçip seçmediği hakkında en fazla eksik bilgie sahip oldumuz veridir.

Tek Değişkenli Dağılım

Histogram, bir değişkenin dağılımını görsel olarak temsil eden bir grafik türüdür. “Age” değişkeninin histogram grafiği, yaş değişkeninin farklı yaş gruplarındaki dağılımını gösterir.

Histogram grafiği, yaş değişkeninin belirli aralıklardaki frekansını gösterir. Her bir çubuk (bar), belirli bir yaş aralığındaki gözlemlerinin sayısını temsil eder. Bu sayede, yaş değişkeninin genel dağılım özellikleri, merkezi eğilimi ve yayılımı hakkında bilgi edinilir.

1.Grafiğe bakıldığında genç ve orta yaş gurbunun (20 ile 40) çoğunluğu oluşturduğu dikkatimizi çekmektedir. 0 ile 20 aş grubu arasında bir artış görülmektedir, 20 ile 40 yaş aralığı en oğun yaş grubun u göstermektedir. 40 ile 80 arası yaş grubunun ise giderek düştüğünü gözlemleyebiliriz.

RoomService, FoodCourt, ShoppingMall, Spa, VRDeck grafiklerine bakıldığında çok az yolcunun bunlardan birini veya bir kaçını kullandığı gözlemlenebilir.Genellikle kullanılmadığı söylenebilir.

Yolcular Uzay Gemisi Titanic’in birçok lüks olanağından faydalanmak istememiştir.

Çubuk Grafik (frekanslı)

Çubuk grafik (bar plot veya bar chart), kategorik verilerin frekanslarını veya oranlarını görsel olarak temsil etmek için kullanılan bir grafik türüdür. Bu grafik, belirli kategorik değerlerin sıklığını veya dağılımını anlamak amacıyla kullanılır. Özellikle, bir değişkenin kategorik olduğu durumlarda sıkça tercih edilen bir görselleştirme aracıdır.

Çubuk grafikte her bir çubuk, belirli bir kategoriye ait gözlemlerin sayısını veya oranını temsil eder. Yatay eksende kategorik değerler bulunurken, dikey eksende bu kategorik değerlere ait frekanslar veya oranlar yer alır.

Çubuk grafik, verilerin karşılaştırılması, dağılımlarının görüntülenmesi ve genelde kategorik verilerin analizi için kullanılır. Bu tür grafikler, veri setindeki desenleri ve eğilimleri hızlı bir şekilde anlamak için etkili araçlardır.

1.Grafik:HomePlanet:Birinci grafiğe bakıldığında Yolcuların çoğunun 4500’den fazla yolcunun ayrıldığı gezegen Eart olarak gözükmektedir. İkibin yüze akın yolcunun Europa da indiği a da ikamet ettiği anlaşılıyor.Mars’ta inen yolcu sayısı ise 1500’dür.Geriye Kalan 200 yolcunun ise nerede ikamet ettikleri bilinmiyor.Bu grafiğe bakıldığı yolcuların genellikle daimi ikamet ettikleri gezegen yarıdan fazla bir oranla earth’dır.

2.Grafik:CryoSleep:CryoSleep grafiğine bakıldığında 4800 kişilik bir grubun yolculuk süresince askıya alınmış animasyona alınmayı seçmediğini yorumlanmaktadır.2500 yolcunun ise yolculuk süresince askıya alınmış animasyona alınmayı seçtiği görülmektedir. Geriye kalan yolcuların ise seçip seçmediği bilinmemektedir.

3.Grafik:Destination:Destination grafiğine bakıldığında 6000 bine yakın yolcunun çoğunluk kesimin TRAPPIST-1e gezegeninde inecektir.1800 yolcunun 55 cancri e gezegeninde ineceği gözlenmektedir.900 yolcunun PSO J318.5-22 gezegeninde inecektir.Gerie kalan azınlığın nerede ineceği belli değildir.

4.Grafik:VIP:VIP grafiğine bakıldığında çok yüksek bir oranın yaklaşık 8200 yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapmadığı gözlenmektedir. Ödeme yapan ve ödeme yapıp yapmadığı bilinmeyen yolcuların oranı oldukça düşüktür.

5.Grafik:Transported:Transported grafiğine bakıldığında yarı yarıya bir oran gözükmektedir.Yolcuların 4400 kişisi başka bir boyuta taşındığını diğer 4400 yolcunun başka bir boyuta taşınmadığı gözlemlenmektedir.

QQ Grafiği

QQ plot (Quantile-Quantile plot), bir teorik dağılım ile veri setindeki gözlemler arasındaki benzerlikleri değerlendirmek için kullanılan bir grafik türüdür. Bu grafik, iki veri kümesi arasındaki quantile (sıralı değer) ilişkilerini görselleştirir.

Teorik ve Gözlemlenen Quantile Değerleri:

X ekseni: Teorik bir dağılıma ait quantile değerleri (genellikle standart normal dağılım quantile’ları). Y ekseni: Gözlemlenen veri setinin quantile değerleri.

Diyagonal Referans Çizgisi:Çoğu zaman, bir DIYAGONAL çizgi çizilir. Eğer her iki veri kümesi birbirine tamamen uysaydı, noktalar bu çizgi üzerinde olurdu.

QQ plot, özellikle normal dağılım kontrolü için sıklıkla kullanılır. Eğer bir veri seti normal dağılıma sahipse, QQ plot üzerindeki noktalar genellikle diyagonal çizginin etrafında simetrik olarak düzenlenir. Eğer veri seti normal dağılıma uymuyorsa, QQ plot üzerinde belirgin bir eğilim veya sapma gözlemlenebilir.

QQ pilot normal dağılımda olduğunu gösterir.

Korelasyon analizi

Korelasyon analizi, iki değişken arasındaki ilişkiyi ölçen bir istatistiksel yöntemdir. Bu analiz, değişkenler arasındaki ilişkinin gücünü ve yönünü belirlemek için kullanılır.

Korelasyon analizi, iki değişken arasındaki ilişkiyi ölçen bir korelasyon katsayısı üretir. Korelasyon katsayısı genellikle -1 ile 1 arasında bir değer alır:

1: Tam pozitif korelasyon (bir değişken arttığında diğer değişken de artar). 0: Korelasyon yok (değişkenler arasında herhangi bir ilişki yok). -1: Tam negatif korelasyon (bir değişken arttığında diğer değişken azalır).

Korelasyon analizi, veri setindeki ilişkileri anlamak, değişkenler arasındaki bağlantıları incelemek ve tahmin modelleri oluşturmak için yaygın olarak kullanılır. İki sürekli değişken arasındaki ilişkinin doğrusal olup olmadığını değerlendirmek için Pearson korelasyon katsayısı sıkça kullanılır. Ancak, veri normal dağılıma uymuyorsa veya ilişki doğrusal değilse, diğer korelasyon yöntemleri de kullanılabilir

Korelasyon Katsayısı Değerleri:

1’e Yaklaşan Pozitif Korelasyon (0.8 - 1): İki değişken arasında güçlü bir pozitif ilişki olduğunu gösterir. Bir değişken arttığında diğer değişken de artar. 0’a Yaklaşan Korelasyon (0.1 - 0.2): İki değişken arasında çok zayıf veya hafif bir ilişki olduğunu gösterir. İki değişken arasında bir ilişki olduğunu söylemek zor olabilir. -1’e Yaklaşan Negatif Korelasyon (-0.8 - -1): İki değişken arasında güçlü bir negatif ilişki olduğunu gösterir. Bir değişken arttığında diğer değişken azalır.

Dağılım ve Aykırı Değerler:

Korelasyon analizi, değişkenler arasındaki doğrusal ilişkiyi ölçer. Eğer veri setiniz doğrusal bir ilişki içermiyorsa, korelasyon katsayısı düşük olabilir. Ayrıca, aykırı değerler de analizi etkileyebilir.

Korelasyon İstatistiksel Anlamlılık:

Korelasyon katsayısının istatistiksel olarak anlamlı olup olmadığını kontrol etmek önemlidir. Bunun için genellikle p değeri kullanılır. Anlamsız bir korelasyon, rastgele olasılık sonucu ortaya çıkmış olabilir.

Sıklıkla Karıştırılan İle Nedensellik Arasındaki Fark:

Korelasyon, iki değişken arasındaki ilişkiyi ölçer, ancak bu ilişkinin nedensel olduğu anlamına gelmez. İki değişken arasındaki korelasyon, bir değişkenin diğerini sebep olduğu anlamına gelmez.

Temel Bileşenler Analizi

Temel Bileşen Analizi (Principal Component Analysis veya kısaca PCA), çok değişkenli veri setlerinin boyutsal azaltma amacıyla kullanılan bir istatistiksel yöntemdir. PCA, veri setindeki değişkenler arasındaki ilişkileri anlamak ve ana değişkenlere (temel bileşenlere) dönüştürmek için kullanılır.

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::between()     masks data.table::between()
## ✖ dplyr::filter()      masks stats::filter()
## ✖ dplyr::first()       masks data.table::first()
## ✖ lubridate::hour()    masks data.table::hour()
## ✖ lubridate::isoweek() masks data.table::isoweek()
## ✖ dplyr::lag()         masks stats::lag()
## ✖ dplyr::last()        masks data.table::last()
## ✖ lubridate::mday()    masks data.table::mday()
## ✖ lubridate::minute()  masks data.table::minute()
## ✖ lubridate::month()   masks data.table::month()
## ✖ lubridate::quarter() masks data.table::quarter()
## ✖ lubridate::second()  masks data.table::second()
## ✖ purrr::transpose()   masks data.table::transpose()
## ✖ lubridate::wday()    masks data.table::wday()
## ✖ lubridate::week()    masks data.table::week()
## ✖ lubridate::yday()    masks data.table::yday()
## ✖ lubridate::year()    masks data.table::year()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Tidyverse kodu

library(tidyverse) kodu, R programında tidyverse adlı bir paket koleksiyonunu yüklemeye yöneliktir. tidyverse, veri manipülasyonu, görselleştirme ve analiz için kullanılan bir dizi paketi bir araya getirir ve bu nedenle geniş bir veri bilimi aracıdır.

tidyverse’ın içinde birçok farklı paket bulunmaktadır, ancak en bilinenleri arasında dplyr, ggplot2, tidyr, ve readr yer almaktadır.

library(explore)

Explore kodu

“explore” paketi, veri keşfi (data exploration) işlemleri için tasarlanmış bir R paketidir. Bu paket, veri setinin genel özelliklerini, temel istatistikleri, eksik veri analizini, değişkenler arasındaki ilişkileri ve diğer çeşitli özellikleri keşfetmek için kullanılan bir dizi fonksiyon içerir.

library(explore) komutu, “explore” paketini yükleyerek ve kullanıma hazır hale getirerek bu paketi R ortamında kullanılabilir hale getirir. Bir kez yüklendikten sonra, “explore” paketinin içindeki fonksiyonları çağırabilir ve veri setiniz üzerinde çeşitli keşif analizleri yapılabilmektedir.

train %>% describe_all()
## # A tibble: 14 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA  NA       NA
##  2 HomePlanet   chr     201    2.3      4    NA  NA       NA
##  3 CryoSleep    lgl     217    2.5      3     0   0.36     1
##  4 Cabin        chr     199    2.3   6561    NA  NA       NA
##  5 Destination  chr     182    2.1      4    NA  NA       NA
##  6 Age          dbl     179    2.1     81     0  28.8     79
##  7 VIP          lgl     203    2.3      3     0   0.02     1
##  8 RoomService  dbl     181    2.1   1274     0 225.   14327
##  9 FoodCourt    dbl     183    2.1   1508     0 458.   29813
## 10 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 11 Spa          dbl     183    2.1   1328     0 311.   22408
## 12 VRDeck       dbl     188    2.2   1307     0 305.   24133
## 13 Name         chr     200    2.3   8474    NA  NA       NA
## 14 Transported  lgl       0    0        2     0   0.5      1

Describle_all kodu

Bu R kodu, train adlı bir veri çerçevesinin tüm değişkenlerine (sütunlara) ait temel istatistiksel özet bilgileri sağlamak için kullanılır. Bu tür bir kod, dplyr paketinin describe_all() fonksiyonu ile gerçekleştirilir.Bu kodun çalıştırılmasıyla, “train” veri çerçevesindeki tüm değişkenlere ait istatistiksel özet bilgileri görsel olarak veya ekrana basılarak elde edilir. Bu tür bir özet, veri setinin genel yapısı, merkezi eğilim, dağılım ve diğer temel özellikleri hakkında hızlı bir bakış sağlar.

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.
View(test)

test.csv - Yolcuların geri kalan üçte birinin (~4300) kişisel kayıtları, test verisi olarak kullanılacak. TransportedGöreviniz bu setteki yolcular için değerini tahmin etmektir.

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>
library(DataExplorer)
create_report(test)
## 
## 
## processing file: report.rmd
## 
  |                                           
  |                                     |   0%
  |                                           
  |.                                    |   2%                                 
  |                                           
  |..                                   |   5% [global_options]                
  |                                           
  |...                                  |   7%                                 
  |                                           
  |....                                 |  10% [introduce]                     
  |                                           
  |....                                 |  12%                                 
  |                                           
  |.....                                |  14% [plot_intro]                    
  |                                           
  |......                               |  17%                                 
  |                                           
  |.......                              |  19% [data_structure]                
  |                                           
  |........                             |  21%                                 
  |                                           
  |.........                            |  24% [missing_profile]               
  |                                           
  |..........                           |  26%                                 
  |                                           
  |...........                          |  29% [univariate_distribution_header]
  |                                           
  |...........                          |  31%                                 
  |                                           
  |............                         |  33% [plot_histogram]                
  |                                           
  |.............                        |  36%                                 
  |                                           
  |..............                       |  38% [plot_density]                  
  |                                           
  |...............                      |  40%                                 
  |                                           
  |................                     |  43% [plot_frequency_bar]            
  |                                           
  |.................                    |  45%                                 
  |                                           
  |..................                   |  48% [plot_response_bar]             
  |                                           
  |..................                   |  50%                                 
  |                                           
  |...................                  |  52% [plot_with_bar]                 
  |                                           
  |....................                 |  55%                                 
  |                                           
  |.....................                |  57% [plot_normal_qq]                
  |                                           
  |......................               |  60%                                 
  |                                           
  |.......................              |  62% [plot_response_qq]              
  |                                           
  |........................             |  64%                                 
  |                                           
  |.........................            |  67% [plot_by_qq]                    
  |                                           
  |..........................           |  69%                                 
  |                                           
  |..........................           |  71% [correlation_analysis]          
  |                                           
  |...........................          |  74%                                 
  |                                           
  |............................         |  76% [principal_component_analysis]  
  |                                           
  |.............................        |  79%                                 
  |                                           
  |..............................       |  81% [bivariate_distribution_header] 
  |                                           
  |...............................      |  83%                                 
  |                                           
  |................................     |  86% [plot_response_boxplot]         
  |                                           
  |.................................    |  88%                                 
  |                                           
  |.................................    |  90% [plot_by_boxplot]               
  |                                           
  |..................................   |  93%                                 
  |                                           
  |...................................  |  95% [plot_response_scatterplot]     
  |                                           
  |.................................... |  98%                                 
  |                                           
  |.....................................| 100% [plot_by_scatterplot]           
## output file: C:/Users/pc/Desktop/Final Projesi/report.knit.md
## "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/pandoc" +RTS -K512m -RTS "C:\Users\pc\Desktop\FINALP~1\REPORT~1.MD" --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc37b498b248e.html --lua-filter "C:\Users\pc\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\pc\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\latex-div.lua" --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template "C:\Users\pc\AppData\Local\R\win-library\4.3\rmarkdown\rmd\h\default.html" --no-highlight --variable highlightjs=1 --variable theme=yeti --mathjax --variable "mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" --include-in-header "C:\Users\pc\AppData\Local\Temp\RtmpGaB36k\rmarkdown-str37b46a7b3854.html"
## 
## Output created: report.html

Test Datası İçin Temel İstatistikler

Ham Sayımlar

İsim Değer Satırlar 4.277 Sütunlar 13 Ayrık sütunlar 7 Sürekli sütunlar 6 Tüm eksik sütunlar 0 Eksik gözlemler 1.117 Satırları Tamamla 3.281 Toplam gözlemler 55.601

Yüzdeler

Ölçülerde ilk olarak karşımıza ayrık sütunlar yüzdesi bizi karşımakta Ayrık sütunlar yüzdesi %53.8 olarak karşımıza çıkmaktadır.

Sütunların ikinci kısmını oluşturan sürekli sütunların ise oranının %46.2 olarak gözlemlenmektedir.

Burada arık sütunlarının sürekli sütunlara göre daha fazla olduğu gözlemlenmektedir.

Eksik sütunların değerinin %0 olmasını anlamı ise eksik sütun olmadığını gösterir.

Complete row yüzdesi %76.7’dır. %76.7 yüksek bir yüzdeliktir.veri setinde çoğu satırın eksiksiz bilgiye sahiptir.

Missing observations yüzdesi %2.0’dır.Bu oranın yüksek olması, eksik veri sorunlarının önemli olabileceğini gösterir.

Eksik Veri Profili

1.PassengerId yüzdelik oranı %0’dır.PassengerId üzerinde transported’da görüldüğü gibi eksik bilgi yoktur.

2.VRDeck yüzdelik oranı %1.87’dir.

3.RoomService yüzdelik oranı %1.92’dir.Yolcuların Uzay Gemisi Titanic’in birçok lüks olanağının her birinde fatura ettiği tutarda da eksik bilgiler bulunmaktadır.

4.HomePlanet yüzdelik oranı %2.03’tür.Yolcuların ayrıldığı gezegen, genellikle daimi ikamet ettikleri gezegenlerdede eksik bilgiler bulunmaktadır.

5.Age yüzdelik oranı %2.13’tür.Yolcuların yaşına bakıldığında eksik bilgiler bulunmaktadır.

6.Destination yüzdelik oranı %2.15’dir.Yolcuların ineceği gezegenlerde de eksik bilgiler bulunmaktadır.

7.VIP yüzdelik oranı %2.17’dir.Yolcuların yolculuk sırasında özel VIP hizmeti için ödeme yapıp yapmadığı hakkında eksik bilgiler vardır.

8.CryoSleep yüzdelik oranı %2.17’dir.Yolcuların yolculuk süresince askıya alınmış animasyona alınmayı seçip seçmediği hakkında en fazla eksik bilgie sahip oldumuz veridir.

9.Name yüzdelik oranı %2.2’tür.Yolcuların adı ve soyadında da eksik bilgiler bulunmaktadır.

10.ShoppingMall yüzdelik oranı %2.29’dur.

11.Cabin yüzdelik oranı %2.34’tür.Yolcuların kaldığı kabin numaralarında da eksik bilgilere rastlanmaktadır.

12.Spa yüzdelik oranı %2.36’dır.

13.FoodCourt yüzdelik oranı %2.48’dir.

Tek Değişkenli Dağılım

Histogram

1.Grafiğe bakıldığında Train datasında olduğu gibi genç ve orta yaş gurbunun (20 ile 40) çoğunluğu oluşturduğu dikkatimizi çekmektedir. 0 ile 20 aş grubu arasında bir artış görülmektedir, 20 ile 40 yaş aralığı en oğun yaş grubun u göstermektedir. 40 ile 80 arası yaş grubunun ise giderek düştüğünü gözlemleyebiliriz.

RoomService, FoodCourt, ShoppingMall, Spa, VRDeck grafiklerine bakıldığında çok az yolcunun bunlardan birini veya bir kaçını kullandığı gözlemlenebilir.Genellikle kullanılmadığı söylenebilir.

Yolcular Uzay Gemisi Titanic’in birçok lüks olanağından faydalanmak istememiştir.

Çubuk Grafik (frekanslı)

50’den fazla kategori içeren 3 sütun göz ardı edildi. PassengerId: 4277 kategori Cabin: 3266 kategori Name: 4177 kategori

1.Grafik:HomePlanet:Birinci grafiğe bakıldığında Yolcuların çoğunun 2500’den fazla yolcunun ayrıldığı gezegen Eart olarak gözükmektedir. 1000 yolcunun Europa da indiği a da ikamet ettiği anlaşılıyor.Mars’ta inen yolcu sayısı ise 575’dir.Geriye Kalan yolcunun ise nerede ikamet ettikleri bilinmiyor.Bu grafiğe bakıldığı yolcuların genellikle daimi ikamet ettikleri gezegen yarıdan fazla bir oranla earth’dır.

2.Grafik:CryoSleep:CryoSleep grafiğine bakıldığında 2600 kişilik bir grubun yolculuk süresince askıya alınmış animasyona alınmayı seçmediğini yorumlanmaktadır.1550 yolcunun ise yolculuk süresince askıya alınmış animasyona alınmayı seçtiği görülmektedir. Geriye kalan yolcuların ise seçip seçmediği bilinmemektedir.

3.Grafik:Destination:Destination grafiğine bakıldığında 2900 yolcunun çoğunluk kesimin TRAPPIST-1e gezegeninde inecektir.750 yolcunun 55 cancri e gezegeninde ineceği gözlenmektedir.400 yolcunun PSO J318.5-22 gezegeninde inecektir.Gerie kalan azınlığın nerede ineceği belli değildir.

4.Grafik:VIP:VIP grafiğine bakıldığında çok yüksek bir oranın yaklaşık 4100 yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapmadığı gözlenmektedir. Ödeme yapan ve ödeme yapıp yapmadığı bilinmeyen yolcuların oranı oldukça düşüktür.

QQ Grafiği

Uyarı: stat_qq() fonksiyonu içeren 151 satırda geçerli olmayan değerler içeren satırlar kaldırıldı.

Uyarı: stat_qq_line() fonksiyonu içeren 151 satırda geçerli olmayan değerler içeren satırlar kaldırıldı.

Korelasyon analizi

20’den fazla kategori içeren 3 özellik yok sayıldı! PassengerId: 3281 kategori Cabin: 2673 kategori Name: 3277 kategori

Temel bileşenler Analizi

50’den fazla kategori içeren 3 özellik göz ardı edildi! PassengerId: 3281 kategori Cabin: 2673 kategori Name: 3277 kategori

library(tidyverse)
library(explore)
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
library(stringr)

Error in str_split_fixed(train$PassengerId, “_“, 2) :”str_split_fixed” fonksiyonu bulunamadı

Bu hatayı verdiği için stringr paketini yükledik ve Daha sonra library(stringr) komutu ile entegre ettik.,

PassengerId’den ailesıra ve ailenumaraları olarak iki ayrı değişken oluşturma:

train[c('ailenum','ailesıra')] <- str_split_fixed(train$PassengerId,'_',2)

Bu R kodu, train veri çerçevesindeki PassengerId sütununu kullanarak yeni ailenum ve ailesıra adlı iki sütun oluşturur. str_split_fixed fonksiyonu, bir karakter dizisini belirtilen bir ayırıcıya göre bölen ve belirtilen sayıda parçaya ayıran bir fonksiyondur. Bu durumda, PassengerId sütunu içindeki değerlerin ’_’ (alt çizgi) karakterine göre bölünmesi bekleniyor ve en fazla 2 parçaya ayrılması sağlanıyor.

Bu kodun sonucunda, train veri çerçevesine eklenen ‘ailenum’ ve ‘ailesıra’ sütunları, ‘PassengerId’ sütunundaki değerlerin ’_’ karakterine göre bölünmüş hallerini içerecektir. Bu tür bir ayrıştırma genellikle veri çerçevelerinde belirli bilgileri çıkarmak veya yeni değişkenler oluşturmak için kullanılır.

test[c('ailenum','ailesıra')] <- str_split_fixed(test$PassengerId,'_',2)

Aynı kodu test içinde yaptık.

Böylece iki datada da tabloda sıraysıyla ailenum ve ailesıra sütunlarını gösteren paneller oluşturduk .

iki datada da 8 tane aile sıra olduğunu ve 9280 tane ailenum verisini gözlemledik.

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

Bu R kodu, train veri çerçevesindeki sütunları yeniden düzenleyerek yeni bir train veri çerçevesi oluşturur. İşlemin mantığı, train veri çerçevesindeki sütunları belirli bir sıra ile yeniden düzenlemektir.

train <- …: Bu ifade, seçilen sütunları içeren yeni bir veri çerçevesi oluşturarak, bu yeni veri çerçevesini train adlı değişkene atar. Yani, 15. ve 16. sütunlar önce gelir, ardından 1. ile 14. sütunlar gelir.

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

Bu ifade, veri çerçevesinin sütunlarını seçmeye yönelik R dilindeki indeksleme ve dilimleme yöntemini kullanır. İlk kısmın içinde 14:15 ifadesi, 14. ve 15. sütunları seçer. İkinci kısmın içinde 1:13 ifadesi, 1. ile 13. sütunları seçer.

Bu işlem sonucunda, test veri çerçevesinin sütunları belirtilen sırayla düzenlenir. Bu tür bir sıralama işlemi, veri çerçevesindeki sütunların düzenini değiştirmek veya belirli sütunları öne çıkarmak için kullanılabilir.

DECK , NUM , SİDE birleşik verilerini ayrı ayrı sütunlara ayırıyoruz

train[c('deck', 'num', 'side')] <- str_split_fixed(train$Cabin,'/',3)

Bu R kodu, train veri çerçevesindeki Cabin sütununu kullanarak yeni deck, num ve side adlı üç sütun oluşturur. Bu sütunlar, str_split_fixed fonksiyonu kullanılarak Cabin sütunundaki değerlerin ‘/’ (eğik çizgi) karakterine göre bölünmesiyle elde edilir.

str_split_fixed(train$Cabin, ‘/’, 3): Bu ifade, Cabin sütunundaki her bir değeri ‘/’ karakterine göre böler ve en fazla 3 parçaya ayırır. Sonuç, bir matris olacaktır.

train[c(‘deck’, ‘num’, ‘side’)] <- …: Bu ifade, train veri çerçevesine üç yeni sütun eklemek için kullanılır. Yeni sütunlara isim olarak ‘deck’, ‘num’ ve ‘side’ verilir.

…: Bu kısımda, önceki adımda oluşturulan matrisin değerleri atanır. Yani, ‘deck’ sütunu oluşturulan matrisin ilk sütunu, ‘num’ sütunu ikinci sütunu, ‘side’ sütunu ise üçüncü sütunu olacaktır.

test[c('deck', 'num', 'side')] <- str_split_fixed(test$Cabin,'/',3)

Bu işlem sonucunda, test veri çerçevesine eklenen ‘deck’, ‘num’, ve ‘side’ sütunları, ‘Cabin’ sütunundaki değerlerin ‘/’ karakterine göre bölünmüş hallerini içerecektir. Bu tür bir ayrıştırma, veri içindeki bilgileri daha ayrıntılı bir şekilde ele almak ve analiz etmek için kullanılabilir.

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

Bu R kodu, train veri çerçevesindeki sütunları yeniden düzenleyerek yeni bir train veri çerçevesi oluşturur. İşlemin mantığı, train veri çerçevesindeki sütunları belirli bir sıra ile düzenlemektir.

train <- …: Bu ifade, seçilen sütunları içeren yeni bir veri çerçevesi oluşturarak, bu yeni veri çerçevesini train adlı değişkene atar.

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

Bu işlem sonucunda, test veri çerçevesinin sütunları belirtilen sırayla düzenlenir. Bu tür bir sıralama işlemi, veri çerçevesindeki sütunların düzenini değiştirmek veya belirli sütunları öne çıkarmak için kullanılabilir.

train <- train[, c(1,2,4,5,17,18,19, 7:16)]

Bu R kodu, train veri çerçevesindeki sütunları yeniden düzenleyerek yeni bir train veri çerçevesi oluşturur. İşlemin mantığı, belirli sütunları belirli bir sıra ile seçmek ve bu sütunları kullanarak yeni bir veri çerçevesi oluşturmaktır.

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

Bu işlem sonucunda, test veri çerçevesi, belirtilen sırayla seçilen sütunları içerecek şekilde güncellenir. Bu tür bir sıralama ve seçim işlemi, veri çerçevesindeki belirli sütunları öne çıkarmak veya analiz etmek için kullanılabilir.

# Veri çerçevesinin sütun isimlerini görüntüle
colnames(train)
##  [1] "ailenum"      "ailesıra"     "HomePlanet"   "CryoSleep"    "VRDeck"      
##  [6] "Name"         "Transported"  "deck"         "num"          "side"        
## [11] "Destination"  "Age"          "VIP"          "RoomService"  "FoodCourt"   
## [16] "ShoppingMall" "Spa"
# "cabin" sütununu kontrol et
"cabin" %in% colnames(train)
## [1] FALSE

( cabin sütunu olmadığı için çıkartılmıyor )

install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
library(dplyr)

Train ve Test Datalarını Temizleme (NA=Boşluk , not available)

NA’LARI TEST VE TRAİN SETİNDEN KALDIRMAMIZ GEREKİYOR.

train$HomePlanet <- addNA(train$HomePlanet)

addNA fonksiyonu, bir vektördeki eksik değerleri (NA olarak temsil edilen değerleri) içeren yeni bir vektör oluşturur. Eğer orijinal vektörde eksik değerler varsa, addNA bu eksik değerlere sahip olan yerleri korur ve eksik değeri olmayan yerlere “NA” etiketi ekler.

unique(train$HomePlanet)
## [1] Europa Earth  Mars   <NA>  
## Levels: Earth Europa Mars <NA>

Unique fonksiyonu, bir vektörde veya faktörde bulunan benzersiz (tekil) değerleri döndüren bir R dilindeki bir fonksiyondur. Yani, bir vektörde veya faktörde tekrarlanan değerleri bir kez listelemek için kullanılır.

Uniqe kodu bize verinin bize saı mı yoksa katagori mi olduğunu gösterir.Katagorilere başka bir katagori eklenir.Hepsi kontrol edilir.NA diye ayrı bir katagori açılır.

test$HomePlanet <- addNA(test$HomePlanet)
unique(test$HomePlanet)
## [1] Earth  Europa Mars   <NA>  
## Levels: Earth Europa Mars <NA>
train$CryoSleep <- addNA(train$CryoSleep)
unique(train$CryoSleep)
## [1] FALSE TRUE  <NA> 
## Levels: FALSE TRUE <NA>
test$CryoSleep <- addNA(test$CryoSleep)
unique(test$CryoSleep)
## [1] TRUE  FALSE <NA> 
## Levels: FALSE TRUE <NA>
train %>% describe_all()
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 ailenum      chr       0    0     6217    NA  NA       NA
##  2 ailesıra     chr       0    0        8    NA  NA       NA
##  3 HomePlanet   fct       0    0        4    NA  NA       NA
##  4 CryoSleep    fct       0    0        3    NA  NA       NA
##  5 VRDeck       dbl     188    2.2   1307     0 305.   24133
##  6 Name         chr     200    2.3   8474    NA  NA       NA
##  7 Transported  lgl       0    0        2     0   0.5      1
##  8 deck         chr     199    2.3      9    NA  NA       NA
##  9 num          chr       0    0     1818    NA  NA       NA
## 10 side         chr       0    0        3    NA  NA       NA
## 11 Destination  chr     182    2.1      4    NA  NA       NA
## 12 Age          dbl     179    2.1     81     0  28.8     79
## 13 VIP          lgl     203    2.3      3     0   0.02     1
## 14 RoomService  dbl     181    2.1   1274     0 225.   14327
## 15 FoodCourt    dbl     183    2.1   1508     0 458.   29813
## 16 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 17 Spa          dbl     183    2.1   1328     0 311.   22408
train$VRDeck <- addNA(train$VRDeck)
test$VRDeck <- addNA(test$VRDeck)
test$deck <- addNA (test$deck)
unique(test$deck)
## [1] G    F    C    B    D    E    <NA> A    T   
## Levels: A B C D E F G T <NA>
train$deck <- addNA (train$deck)
unique(train$deck)
## [1] B    F    A    G    <NA> E    D    C    T   
## Levels: A B C D E F G T <NA>
test$num <- addNA (test$num)
train$num <- addNA (train$num)
test$side <- addNA (test$side)
train$side <- addNA (train$side)
test$Destination <- addNA (test$Destination)
unique(test$Destination)
## [1] TRAPPIST-1e   55 Cancri e   PSO J318.5-22 <NA>         
## Levels: 55 Cancri e PSO J318.5-22 TRAPPIST-1e <NA>
train$Destination <- addNA (train$Destination)
unique(train$Destination)
## [1] TRAPPIST-1e   PSO J318.5-22 55 Cancri e   <NA>         
## Levels: 55 Cancri e PSO J318.5-22 TRAPPIST-1e <NA>
train <- train %>%
  group_by(HomePlanet) %>%
  mutate_at(vars(Age), ~replace_na(., mean(., na.rm = TRUE)))

Bu kod train grubunda homeplanetlere göre gruplanıp yaş değişkeninin NA’lerini replace eder yani değiştirir.Homeplanetteki gruplarına göre yaşların ortamalarını alıp boşluklara ortalamaları yazması için yapılan koddur.

Aynı işlemi Test datası içinde apmamız gerekiyor.

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 ailenum      chr       0    0     6217    NA  NA       NA
##  2 ailesıra     chr       0    0        8    NA  NA       NA
##  3 HomePlanet   fct       0    0        4    NA  NA       NA
##  4 CryoSleep    fct       0    0        3    NA  NA       NA
##  5 VRDeck       fct       0    0     1307    NA  NA       NA
##  6 Name         chr     200    2.3   8474    NA  NA       NA
##  7 Transported  lgl       0    0        2     0   0.5      1
##  8 deck         fct       0    0        9    NA  NA       NA
##  9 num          fct       0    0     1818    NA  NA       NA
## 10 side         fct       0    0        3    NA  NA       NA
## 11 Destination  fct       0    0        4    NA  NA       NA
## 12 Age          dbl       0    0       84     0  28.8     79
## 13 VIP          lgl     203    2.3      3     0   0.02     1
## 14 RoomService  dbl     181    2.1   1274     0 225.   14327
## 15 FoodCourt    dbl     183    2.1   1508     0 458.   29813
## 16 ShoppingMall dbl     208    2.4   1116     0 174.   23492
## 17 Spa          dbl     183    2.1   1328     0 311.   22408
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 ailenum      chr       0    0     3063    NA  NA       NA
##  2 ailesıra     chr       0    0        8    NA  NA       NA
##  3 HomePlanet   fct       0    0        4    NA  NA       NA
##  4 CryoSleep    fct       0    0        3    NA  NA       NA
##  5 Spa          dbl     101    2.4    834     0 303.   19844
##  6 VRDeck       fct       0    0      797    NA  NA       NA
##  7 Name         chr      94    2.2   4177    NA  NA       NA
##  8 deck         fct       0    0        9    NA  NA       NA
##  9 num          fct       0    0     1506    NA  NA       NA
## 10 side         fct       0    0        3    NA  NA       NA
## 11 Destination  fct       0    0        4    NA  NA       NA
## 12 Age          dbl       0    0       83     0  28.7     79
## 13 VIP          lgl      93    2.2      3     0   0.02     1
## 14 RoomService  dbl      82    1.9    843     0 219.   11567
## 15 FoodCourt    dbl     106    2.5    903     0 439.   25273
## 16 ShoppingMall dbl      98    2.3    716     0 177.    8292
test$Age <- addNA (test$Age)
train$Age <- addNA (train$Age)
test$VIP <- addNA (test$VIP)
train$VIP <- addNA (train$VIP)
train <- train %>%
  group_by(Destination) %>%
  mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))

Train datasını alıp Destination’a göre gruplarız.Grupladıktan sonra RoomService’nin boş olanlarını ortalamaları ile dolduracaktır.

test <- test %>%
  group_by(Destination) %>%
  mutate_at(vars(RoomService), ~replace_na(., mean(., na.rm = TRUE)))
test$RoomService <- addNA (test$RoomService)
train$RoomService <- addNA (train$RoomService)
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 ailenum      chr       0    0     6217    NA  NA      NA
##  2 ailesıra     chr       0    0        8    NA  NA      NA
##  3 HomePlanet   fct       0    0        4    NA  NA      NA
##  4 CryoSleep    fct       0    0        3    NA  NA      NA
##  5 VRDeck       fct       0    0     1307    NA  NA      NA
##  6 Name         chr     200    2.3   8474    NA  NA      NA
##  7 Transported  lgl       0    0        2     0   0.5     1
##  8 deck         fct       0    0        9    NA  NA      NA
##  9 num          fct       0    0     1818    NA  NA      NA
## 10 side         fct       0    0        3    NA  NA      NA
## 11 Destination  fct       0    0        4    NA  NA      NA
## 12 Age          fct       0    0       84    NA  NA      NA
## 13 VIP          fct       0    0        3    NA  NA      NA
## 14 RoomService  fct       0    0     1277    NA  NA      NA
## 15 FoodCourt    dbl     183    2.1   1508     0 458.  29813
## 16 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 17 Spa          dbl     183    2.1   1328     0 311.  22408
# train$FoodCourt sütunundaki verilerin türünü kontrol ederiz
class(train$FoodCourt)
## [1] "numeric"
# Eğer türü "numeric" değilse, uygun bir dönüşümü gerçekleştir
train$FoodCourt <- as.numeric(train$FoodCourt)

# Şimdi hist fonksiyonunu kullanılabilir
hist(train$FoodCourt)

ÇOĞUNLUK 0 TL HARCADIĞI İÇİN DİĞERLERİNİDE 0 TL HARCAMIŞTIR DİYE TAHMİN EDİLİR

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

COALESCE KODU : FOODCOURTU ALIP İSTEDİĞİMİZ RAKAMLA DEĞİŞTİREBİLİRİZ DEMEKTİR. TRAİN DATASINDA FOODCOURT’U MUTATE EDİP FOODCOURT’UN İÇİNDEKİLER BOŞ İSE 0’I YAZ DEMEKTİR.

test$FoodCourt <- as.numeric(as.character(test$FoodCourt))
test <- test %>% mutate(FoodCourt = coalesce(FoodCourt, 0))
library(dplyr)

# FoodCourt sütununu sayısal formata çevir
train <- train %>% 
  mutate(FoodCourt = as.numeric(as.character(FoodCourt))) %>%
  mutate(FoodCourt = coalesce(FoodCourt, 0))
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 ailenum      chr       0    0     6217    NA  NA      NA
##  2 ailesıra     chr       0    0        8    NA  NA      NA
##  3 HomePlanet   fct       0    0        4    NA  NA      NA
##  4 CryoSleep    fct       0    0        3    NA  NA      NA
##  5 VRDeck       fct       0    0     1307    NA  NA      NA
##  6 Name         chr     200    2.3   8474    NA  NA      NA
##  7 Transported  lgl       0    0        2     0   0.5     1
##  8 deck         fct       0    0        9    NA  NA      NA
##  9 num          fct       0    0     1818    NA  NA      NA
## 10 side         fct       0    0        3    NA  NA      NA
## 11 Destination  fct       0    0        4    NA  NA      NA
## 12 Age          fct       0    0       84    NA  NA      NA
## 13 VIP          fct       0    0        3    NA  NA      NA
## 14 RoomService  fct       0    0     1277    NA  NA      NA
## 15 FoodCourt    dbl       0    0     1507     0 448.  29813
## 16 ShoppingMall dbl     208    2.4   1116     0 174.  23492
## 17 Spa          dbl     183    2.1   1328     0 311.  22408
test$ShoppingMall <- addNA (test$ShoppingMall)
train$ShoppingMall <- addNA (train$ShoppingMall)
test$Spa <- addNA (test$Spa)
train$Spa <- addNA (train$Spa)
test$Name <- addNA (test$Name)
train$Name <- addNA (train$Name)
train %>%describe_all()
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min  mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl> <dbl> <dbl>
##  1 ailenum      chr       0      0   6217    NA  NA      NA
##  2 ailesıra     chr       0      0      8    NA  NA      NA
##  3 HomePlanet   fct       0      0      4    NA  NA      NA
##  4 CryoSleep    fct       0      0      3    NA  NA      NA
##  5 VRDeck       fct       0      0   1307    NA  NA      NA
##  6 Name         fct       0      0   8474    NA  NA      NA
##  7 Transported  lgl       0      0      2     0   0.5     1
##  8 deck         fct       0      0      9    NA  NA      NA
##  9 num          fct       0      0   1818    NA  NA      NA
## 10 side         fct       0      0      3    NA  NA      NA
## 11 Destination  fct       0      0      4    NA  NA      NA
## 12 Age          fct       0      0     84    NA  NA      NA
## 13 VIP          fct       0      0      3    NA  NA      NA
## 14 RoomService  fct       0      0   1277    NA  NA      NA
## 15 FoodCourt    dbl       0      0   1507     0 448.  29813
## 16 ShoppingMall fct       0      0   1116    NA  NA      NA
## 17 Spa          fct       0      0   1328    NA  NA      NA

TEST VE TRAİN DATALARININ TAHMİNİ

Train veri setini Testing ve Trainig gruplarına ayırmak

library(rsample)

rsample paketi; Random sample : Rastgele örneklem demek. Rastgele örneklem almayı sağlayan paket.

Veri Bölme (Data Splitting): initial_split fonksiyonu, veri setini eğitim ve test alt kümelerine bölmenizi sağlar.

set.seed(3741)

Grupları her seferinde farklı farklı ayırmaması ama rastgele çalıştırması için uyguanır. Rastgele sayılar verilir 3741 numarasına göre rastgeleleştirmeyi sağlar.

set.seed fonksiyonu, rastgele sayı üretiminde kullanılan tohum değerini (seed) ayarlamak için kullanılır. Bu işlem, rastgelelik içeren algoritmaların çalışmasını kontrol eder ve aynı tohum değeri kullanıldığında, aynı “rastgele” sonuçların elde edilmesini sağlar.

ayrıstırmaörn <- initial_split(train, prop = 0.75)

Bu kod ilk ayırmada kullanılır. Testing ve traning setlerini ayırmak için.

Yeni bir data oluşturulur.

initial_split fonksiyonu, veri setini iki alt kümeye (training ve testing) bölme işlemi için kullanılır. Bu fonksiyon, belirtilen oranda veriyi eğitim setine (training set) ve kalan oranda veriyi test setine (testing set) bölerek iki ayrı veri çerçevesi oluşturur.

prop parametresi, bölme oranını belirtir.

training <- training(ayrıstırmaörn)
testing <- testing(ayrıstırmaörn)

İLK TAHMİN

library(tidymodels)
## ── Attaching packages ────────────────────────────────────── tidymodels 1.1.1 ──
## ✔ broom        1.0.5     ✔ recipes      1.0.9
## ✔ dials        1.2.0     ✔ tune         1.1.2
## ✔ infer        1.0.5     ✔ workflows    1.1.3
## ✔ modeldata    1.2.0     ✔ workflowsets 1.0.1
## ✔ parsnip      1.1.1     ✔ yardstick    1.2.0
## ── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ──
## ✖ dplyr::between()   masks data.table::between()
## ✖ scales::discard()  masks purrr::discard()
## ✖ dplyr::filter()    masks stats::filter()
## ✖ dplyr::first()     masks data.table::first()
## ✖ recipes::fixed()   masks stringr::fixed()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ dplyr::last()      masks data.table::last()
## ✖ yardstick::spec()  masks readr::spec()
## ✖ recipes::step()    masks stats::step()
## ✖ purrr::transpose() masks data.table::transpose()
## • Search for functions across packages at https://www.tidymodels.org/find/

Tidymodels paketi bir çok paketten oluşmaktadır.

rf <- rand_forest(trees = 1000 ) %>% 
  set_engine("ranger") %>% 
  set_mode("classification")

random forest denildiği gibi rastgele orman tahmini demektir. Random forest belirli ağaçlar koyar.Bu ağaçlar sırasıyla tahminlerde bulunur True yada False tahminleri gibi. 4000 tane ağaç koyarsak bütün verilere tek tek bakar bu verilerden hangisi olursa true ya da false’a dönüşüre bakmakta.Ve bu model kendi içinde bunu 4000 kez tekrarlamakta ve tekrarı sonucunda bir sonuç elde ediyor.Forest’a bakılırsa tree konulur.

library(ranger)
model <- workflow() %>% add_model(rf)%>%
  add_formula(Transported ~ HomePlanet + Destination + CryoSleep + Age + VIP + RoomService + FoodCourt + Spa + ShoppingMall + VRDeck + deck + side )
folds <- vfold_cv(training, repeats = 10)

→ A | error

: For a classification model, the outcome should be a factor, not a logical. There were issues with some computations A: x100 Warning: All models failed. Run show_notes(.Last.tune.result) for more information.

Bu hatanın nedeni, sınıflandırma modelinizdeki hedef değişkenin logical (mantıksal) veri türünde olmasıdır. Sınıflandırma modellerinde hedef değişkenin factor (faktör) veri türünde olması gerekmektedir.

Çözüm olarak, hedef değişkeninizi factor veri türüne dönüştürmeliyiz.

Bunu train,training ve testinge uygulamalıyız. Test datasına uygulanmaz çünkü içinde Transported verisi bulunmaz!

train$Transported <- as.factor(train$Transported)
testing$Transported <- as.factor(testing$Transported)
training$Transported <- as.factor(training$Transported)
trained_models <- fit_resamples(object = model,
                                resamples = folds )
## → A | error:   For a classification model, the outcome should be a `factor`, not a `logical`.
## 
There were issues with some computations   A: x1

There were issues with some computations   A: x2

There were issues with some computations   A: x5

There were issues with some computations   A: x8

There were issues with some computations   A: x12

There were issues with some computations   A: x15

There were issues with some computations   A: x19

There were issues with some computations   A: x22

There were issues with some computations   A: x25

There were issues with some computations   A: x29

There were issues with some computations   A: x32

There were issues with some computations   A: x35

There were issues with some computations   A: x38

There were issues with some computations   A: x42

There were issues with some computations   A: x45

There were issues with some computations   A: x48

There were issues with some computations   A: x51

There were issues with some computations   A: x54

There were issues with some computations   A: x58

There were issues with some computations   A: x61

There were issues with some computations   A: x64

There were issues with some computations   A: x68

There were issues with some computations   A: x71

There were issues with some computations   A: x74

There were issues with some computations   A: x77

There were issues with some computations   A: x81

There were issues with some computations   A: x84

There were issues with some computations   A: x87

There were issues with some computations   A: x90

There were issues with some computations   A: x94

There were issues with some computations   A: x97

There were issues with some computations   A: x100

There were issues with some computations   A: x100
## Warning: All models failed. Run `show_notes(.Last.tune.result)` for more
## information.