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)
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.
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>
“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)
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 pandoc2c0842e469bf.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\RtmpOyKE5B\rmarkdown-str2c0840a21ab9.html"
##
## Output created: report.html
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.
İ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
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 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.
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 (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 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, 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ş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
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” 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
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 pandoc2c085b274729.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\RtmpOyKE5B\rmarkdown-str2c087c1a4a39.html"
##
## Output created: report.html
İ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
Ö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.
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.
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.
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.
stat_qq() fonksiyonu içeren 151 satırda geçerli
olmayan değerler içeren satırlar kaldırıldı.stat_qq_line() fonksiyonu içeren 151 satırda
geçerli olmayan değerler içeren satırlar kaldırıldı.20’den fazla kategori içeren 3 özellik yok sayıldı! PassengerId: 3281 kategori Cabin: 2673 kategori Name: 3277 kategori
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.
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.
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$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>
test$HomePlanet <- addNA(test$HomePlanet)
unique(test$HomePlanet)
## [1] Earth Europa Mars <NA>
## Levels: Earth Europa Mars <NA>