This is a readthedown Themes YAML from rmdformats Package

Spaceship Titanic

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

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

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

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

PassengerId - Her yolcu için benzersiz bir Kimlik. Her Kimlik gggg_pp biçimini alır; burada gggg yolcunun birlikte seyahat ettiği grubu belirtir ve pp grup içindeki numaradır. Bir gruptaki insanlar çoğunlukla aile üyeleridir, ancak her zaman değil.

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

CryoSleep - Yolcunun yolculuk süresince animasyonun askıya alınmasını seçip seçmediğini belirtir. Dondurucu uykudaki yolcular kabinlerine hapsedilir.

Kabin - Yolcunun kaldığı kabin numarası. Güverte/numara/yan formunu alır; burada taraf, İskele için P veya Sancak için S olabilir.

Hedef - Yolcunun ineceği gezegen.

Yaş - Yolcunun yaşı.

VIP - Yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapıp yapmadığı. RoomService, FoodCourt, Alışveriş Merkezi, Spa, VRDeck - Yolcunun, Spaceship Titanic’in birçok lüks olanağının her birinde fatura ettiği tutar.

Adı - Yolcunun adı ve soyadı. Taşındı - Yolcunun başka bir boyuta taşınıp taşınmadığı. Bu hedeftir, tahmin etmeye çalıştığınız sütundur.

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

sample_submission.csv - Doğru formatta bir gönderim dosyası.

PassengerId - Test setindeki her yolcunun kimliği.

Taşınan - Hedef. Her yolcu için Doğru veya Yanlış’ı tahmin edin.

Download Data (Data Paketini Yüklemek) Data paketini yükleyerek ben Uzay Gemisi Titanik verilerine ulaşacam.

library(readr): Bu satır, readr paketine yükler ve R’de veri okuma işlemleri için kullanıyoruz. train tablosu ‘read’

library(readr)
train_c <- read_csv("train_c.csv")

train.csv, gemideki yolcuların bir alt kümesinin ayrıntılarını içerir (tam olarak 8683 yolcu; her yolcunun tabloda farklı bir sıraya girdiği yer). Bu verileri araştırmak için ekranın solundaki dosya adına tıklayın. Bunu yaptıktan sonra penceredeki tüm verileri görebilirsiniz.

library(readr)
test_c <- read_csv("test_c.csv")

Yolcuların üçte birinin (~4277) kişisel kayıtları test verisi olarak kullanılacak. Göreviniz bu setteki yolcular için Taşınan değerini tahmin etmektir.

sample_submission.csv

Doğru formatta bir gönderim dosyası.

librarysample_submission <- read_csv("sample_submission.csv")

[(su.JPG)]

library(rmarkdown)

R programlama dilinde explore paketini yüklemek için kullanılır. explore paketi, veri keşfi ve görselleştirme süreçlerini kolaylaştırmak için tasarlanmıştır. Bu paket, veri setlerini hızlı bir şekilde incelemek, verilerdeki yapıları ve desenleri keşfetmek, eksik verileri ve aykırı değerleri analiz etmek gibi işlevler sunar. explore paketi, özellikle veri analizi sürecinin başlangıcında, verilerinizi tanımanızı ve anlamlı içgörüler elde etmenizi kolaylaştırır. Bu kodu çalıştırdığınızda, explore paketi R oturumunuza yüklenir ve fonksiyonlarını kullanmaya başlayabilirsiniz.

library(explore)

Bu kodla, R programlama dilinde tidyverse paketini yükler. tidyverse, veri bilimi ve analizi için tasarlanmış bir dizi R paketini içerir. Bu paketler, veri manipülasyonu (örneğin dplyr ve tidyr), veri görselleştirme (ggplot2), ve veri okuma/yazma (readr, readxl, haven vb.) işlemlerini kolaylaştırır. tidyverse, veri analizi işlemlerini daha anlaşılır ve verimli bir şekilde yapmanıza yardımcı olur. Bu kodu çalıştırdığınızda, tidyverse paketi ve bağlı paketleri R oturumunuza yükler ve kullanıma hazır hale getirir.

library(tidyverse)

R’de train adlı veri çerçevesindeki tüm sütunlar için özet istatistikler üretir. Bu, veri setinizin genel bir özetini almak için kullanılır.

describe_all(train_c)
## # A tibble: 16 × 8
##    variable     type     na na_pct unique   min    mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>   <dbl> <dbl>
##  1 PassengerId  chr       0      0   8693    NA   NA       NA
##  2 HomePlanet   chr       0      0      3    NA   NA       NA
##  3 CryoSleep    lgl       0      0      2     0    0.35     1
##  4 Destination  chr       0      0      4    NA   NA       NA
##  5 Age          dbl       0      0     90     0   28.8     79
##  6 VIP          lgl       0      0      2     0    0.02     1
##  7 RoomService  dbl       0      0   1273     0  220.   14327
##  8 FoodCourt    dbl       0      0   1507     0  448.   29813
##  9 ShoppingMall dbl       0      0   1115     0  170.   23492
## 10 Spa          dbl       0      0   1327     0  305.   22408
## 11 VRDeck       dbl       0      0   1306     0  298.   24133
## 12 Transported  lgl       0      0      2     0    0.5      1
## 13 withgroup    dbl       0      0      2     0    0.45     1
## 14 deck         chr       0      0      8    NA   NA       NA
## 15 side         chr       0      0      2    NA   NA       NA
## 16 expense      dbl       0      0   2336     0 1441.   35987
describe_all(test_c)
## # A tibble: 15 × 8
##    variable     type     na na_pct unique   min    mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>   <dbl> <dbl>
##  1 PassengerId  chr       0      0   4277    NA   NA       NA
##  2 HomePlanet   chr       0      0      3    NA   NA       NA
##  3 CryoSleep    lgl       0      0      2     0    0.36     1
##  4 Destination  chr       0      0      4    NA   NA       NA
##  5 Age          dbl       0      0     89     0   28.7     79
##  6 VIP          lgl       0      0      2     0    0.02     1
##  7 RoomService  dbl       0      0    842     0  215.   11567
##  8 FoodCourt    dbl       0      0    902     0  429.   25273
##  9 ShoppingMall dbl       0      0    715     0  173.    8292
## 10 Spa          dbl       0      0    833     0  296.   19844
## 11 VRDeck       dbl       0      0    796     0  305.   22272
## 12 withgroup    dbl       0      0      2     0    0.45     1
## 13 deck         chr       0      0      8    NA   NA       NA
## 14 side         chr       0      0      2    NA   NA       NA
## 15 expense      dbl       0      0   1437     0 1418.   33666

Bu kod, “train_c” veri setindeki belirli sütunların faktörünün (faktör) dönüştürülmesini sağlar.

train_c$HomePlanet <- as.factor(train_c$HomePlanet)
train_c$Destination <- as.factor(train_c$Destination)
train_c$deck <- as.factor(train_c$deck)
train_c$side <- as.factor(train_c$side)

Bu kod, “test_c” veri setindeki belirli sütunların faktörünün (faktör) dönüştürülmesini sağlar.

test_c$HomePlanet <- as.factor(test_c$HomePlanet)
test_c$Destination <- as.factor(test_c$Destination)
test_c$deck <- as.factor(test_c$deck)
test_c$side <- as.factor(test_c$side)
library(DataExplorer)
create_report(train_c)

Bu kod, bir doğrusal regresyon modeli oluşturur.

model = lm(Transported ~ ., data = train_c[, 2:16])

Bu kod, doğrusal regresyon modelinin özet istatistiklerini görüntüler. Özet ayrıntıları içerir:

summary(model)
## 
## Call:
## lm(formula = Transported ~ ., data = train_c[, 2:16])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.42802 -0.30952 -0.03188  0.28870  1.79172 
## 
## Coefficients: (1 not defined because of singularities)
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               3.147e-01  4.000e-02   7.866 4.09e-15 ***
## HomePlanetEuropa          2.150e-01  2.883e-02   7.457 9.72e-14 ***
## HomePlanetMars            9.617e-02  1.475e-02   6.522 7.33e-11 ***
## CryoSleepTRUE             3.811e-01  1.152e-02  33.082  < 2e-16 ***
## DestinationPSO J318.5-22 -4.449e-02  1.803e-02  -2.468 0.013598 *  
## DestinationTRAPPIST-1e   -5.140e-02  1.133e-02  -4.538 5.76e-06 ***
## DestinationTRAPPIST-le    7.513e-03  3.142e-02   0.239 0.811033    
## Age                      -2.182e-03  3.201e-04  -6.815 1.00e-11 ***
## VIPTRUE                  -3.757e-02  2.974e-02  -1.263 0.206555    
## RoomService              -1.176e-04  7.055e-06 -16.674  < 2e-16 ***
## FoodCourt                 4.281e-05  3.054e-06  14.017  < 2e-16 ***
## ShoppingMall              7.969e-05  7.457e-06  10.686  < 2e-16 ***
## Spa                      -8.675e-05  4.109e-06 -21.110  < 2e-16 ***
## VRDeck                   -8.280e-05  4.115e-06 -20.120  < 2e-16 ***
## withgroup                 1.958e-02  9.293e-03   2.107 0.035134 *  
## deckB                     1.107e-01  2.874e-02   3.852 0.000118 ***
## deckC                     1.477e-01  2.900e-02   5.094 3.58e-07 ***
## deckD                     5.090e-02  3.478e-02   1.463 0.143372    
## deckE                     8.494e-03  3.622e-02   0.235 0.814567    
## deckF                     1.031e-01  3.709e-02   2.778 0.005475 ** 
## deckG                     5.791e-02  3.866e-02   1.498 0.134218    
## deckT                     6.610e-02  1.815e-01   0.364 0.715784    
## sideS                     8.542e-02  8.629e-03   9.899  < 2e-16 ***
## expense                          NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4012 on 8670 degrees of freedom
## Multiple R-squared:  0.3578, Adjusted R-squared:  0.3561 
## F-statistic: 219.5 on 22 and 8670 DF,  p-value: < 2.2e-16

Bu kod, veri setini eğitim ve test alt kümelerine böler.

library(caTools)
set.seed(123)
split = sample.split(train_c$Transported, SplitRatio = 0.75)
train_train = subset(train_c, split == TRUE)
train_test = subset(train_c, split == FALSE)

Bu kod, bir doğrusal regresyon modeli oluşturur.

regresyon = lm(Transported ~ ., data = train_train[, -c(1)])

Bu kod, doğrusal regresyon modelinin özet istatistiklerini görüntüler

summary(regresyon)
## 
## Call:
## lm(formula = Transported ~ ., data = train_train[, -c(1)])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.50155 -0.31213 -0.03018  0.29171  1.76723 
## 
## Coefficients: (1 not defined because of singularities)
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               3.482e-01  4.626e-02   7.527 5.89e-14 ***
## HomePlanetEuropa          1.971e-01  3.358e-02   5.871 4.55e-09 ***
## HomePlanetMars            8.600e-02  1.699e-02   5.061 4.29e-07 ***
## CryoSleepTRUE             3.772e-01  1.328e-02  28.402  < 2e-16 ***
## DestinationPSO J318.5-22 -6.107e-02  2.077e-02  -2.940  0.00330 ** 
## DestinationTRAPPIST-1e   -5.426e-02  1.309e-02  -4.144 3.46e-05 ***
## DestinationTRAPPIST-le   -9.053e-03  3.649e-02  -0.248  0.80407    
## Age                      -2.339e-03  3.725e-04  -6.279 3.63e-10 ***
## VIPTRUE                  -1.616e-02  3.384e-02  -0.478  0.63290    
## RoomService              -1.175e-04  7.790e-06 -15.088  < 2e-16 ***
## FoodCourt                 3.905e-05  3.467e-06  11.262  < 2e-16 ***
## ShoppingMall              8.282e-05  8.415e-06   9.842  < 2e-16 ***
## Spa                      -8.543e-05  4.704e-06 -18.160  < 2e-16 ***
## VRDeck                   -8.216e-05  4.777e-06 -17.197  < 2e-16 ***
## withgroup                 1.601e-02  1.076e-02   1.488  0.13688    
## deckB                     1.049e-01  3.290e-02   3.188  0.00144 ** 
## deckC                     1.441e-01  3.318e-02   4.343 1.43e-05 ***
## deckD                     3.223e-02  3.974e-02   0.811  0.41744    
## deckE                    -2.463e-02  4.213e-02  -0.585  0.55884    
## deckF                     8.346e-02  4.290e-02   1.945  0.05176 .  
## deckG                     4.007e-02  4.472e-02   0.896  0.37029    
## deckT                     5.680e-02  1.822e-01   0.312  0.75526    
## sideS                     8.895e-02  9.984e-03   8.909  < 2e-16 ***
## expense                          NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4013 on 6497 degrees of freedom
## Multiple R-squared:  0.358,  Adjusted R-squared:  0.3558 
## F-statistic: 164.7 on 22 and 6497 DF,  p-value: < 2.2e-16

Bu kod, doğrusal doğrusal regresyon modeli aracılığıyla yeni veriler üzerinde tahminler yapar.

reg_tahmin = predict(regresyon, newdata = train_test[, -c(1,12)])

Bu kod, doğrusal regresyon modeli tarafından yapılan tahminlerin sınıflandırılmasını sağlar.

reg_transported_tahmin = ifelse(reg_tahmin > 0.5, 1, 0)

Bu kod, gerçek “Taşınan” değerlerin

transported_gercek = ifelse(train_test[12] == TRUE, 1, 0)

Bu kod, bir karşılaştırma matrisi (karışıklık matrisi) oluşturur.

cm = table(transported_gercek, reg_transported_tahmin)

Bu kod, karşılaştırma matrisini ( cm) görüntüler. Karşılaştırma matrisi, gerçek ve tahmin edilen değerler arasındaki kesişme

cm
##                   reg_transported_tahmin
## transported_gercek   0   1
##                  0 902 177
##                  1 323 771

Bu kod, doğrusal regresyon modelinin doğruluk (doğruluk) değeri hesapları.

(902 + 771)/(902 + 771 + 323 + 177)
## [1] 0.7699034

Bu kod, doğrusal regresyon bilgilerini kullanarak eğitim veri seti üzerinde tahminler ya

reg_tahmin = predict(regresyon, newdata = train_train[, -c(1,12)])

Bu kod, doğrusal regresyon modeli tarafından yapılan tahminlerin sınıflandırılmasını sağlar.

reg_transported_tahmin = ifelse(reg_tahmin > 0.5, 1, 0)

Bu kod, gerçek “Taşınan” değerlerinin sınıflandırılmasını sağlar.

transported_gercek = ifelse(train_train[12] == TRUE, 1, 0)

Bu kod, bir karşılaştırma matrisi (karışıklık matrisi) oluşturur.

cm = table(transported_gercek, reg_transported_tahmin)

Bu kod, karşılaştırma matrisini ( cm) görüntüler. Karşılaştırma matrisi, gerçek ve t

cm
##                   reg_transported_tahmin
## transported_gercek    0    1
##                  0 2682  554
##                  1  946 2338

Bu kod, doğrusal regresyon modelinin doğruluk (doğruluk) değeri hesapları.

(2682 + 2338)/(2682 + 2338 + 554 + 946)
## [1] 0.7699387

Bu kod, doğrusal regresyonun özelliklerini kullanarak test veri seti üzerinde tahminler yapar.

reg_tahmin_bd = predict(model, newdata = test_c[, -c(1)])

Bu kod, doğrusal regresyon modeli tarafından yapılan tahminlerin sınıflandırılmasını sağlar.

reg_transported_test_c_tahmin = ifelse(reg_tahmin_bd > 0.5, TRUE, FALSE)

Bu kod, doğrusal regresyon modeli tarafından yapılan tahminlerin “Transported” değerleri ve yolcu kimlik numaralarını (PassengerId) saklar.

transported = as.character(reg_transported_test_c_tahmin)
PassengerId = test_c$PassengerId

Bu kod, “transported” değişkenini bir vektöre ilaçları ve “Transported” adıyla bir değişkene atar.

Transported=as.vector(transported)

Bu kod, “PassengerId” ve “Transported” değişkenlerini birleştirir ve bunları “submission_regresyon” olarak adlandırılan yeni bir veri çerçevesine atar.

submission_regresyon = cbind(PassengerId, Transported)

Bu kod, submission_regresyonnesnesini bir çerçevelerden verine verir.

submission_regresyon = as.data.frame(submission_regresyon)

Bu kod, R’de string işlemenin sağlanmasını sağlayan stringrpaketleri yükler.

library(stringr)

Bu kod, submission_regresyonveri çerçevesiki “Taşınan” sütunundaki değerlerin ilk harflerini büyük yaparak “taşınan” olarak adlandırılan yeni bir sütuna atar.

submission_regresyon$transported <- str_to_title(submission_regresyon$Transported)

Bu kod, submission_regresyonveri çerçevesini “siniftahmini.csv” adlı bir CSV dosyasına yazar.

write.csv(submission_regresyon, "siniftahmini.csv", row.names = FALSE, quote = FALSE)

glmultiPaket, model seçimi ve model uyumlaştırma için kullanılır. Bu paket, çoklu doğrusal modellerin otomatik olarak seçilmesi ve karşılaştırılması için kullanışlıdır.

library(glmulti)
## Le chargement a nécessité le package : rJava
## Le chargement a nécessité le package : leaps

Bu R kodu, train_cveri çerçevesiki belirli sütunları logaritmik dönüşümle günceller. Bu, belirli sütunlardaki değerlerin doğal logaritmasını alarak yeni bir veri çerçeveleri ( train_c_log) oluşturur.

train_c_log = train_c %>% mutate_at(c(5, 7:11, 16), ~ log(1 + .))
test_c_log = test_c %>% mutate_at(c(5, 7:11, 15), ~ log(1 + .))

Bu R kodu, train_c_logveri çerçevesini kullanarak bir lineer regresyon modeli oluşturur. Model, Transporteddeğişkenleri bağımlı değişken olarak kullanır ve diğer değişkenler bağımsız değişkenlerdir.

modellog = lm(Transported ~ 1 + HomePlanet + Destination + deck + side + CryoSleep + Age + RoomService + FoodCourt + ShoppingMall + Spa +  VRDeck, data = train_c_log)

Bu kod, modellogdoğrusal regresyon modeli aracılığıyla test_c_logveri çerçeveli yeni veriler için tahminler yapar. Tahminler, reg_tahmin_logadı verilen bir değişkende saklanır.

reg_tahmin_log = predict(modellog, newdata = test_c_log[, -c(1)])

Bu kod, reg_tahmin_logdeğişkenindeki tahmin edilen değerler 0,5 eşik değerini kullanarak ikili (DOĞRU/YANLIŞ) değerlerine ulaşır. Tahmin edilen değerler 0,5’ten büyükse TRUE, aksi takdirde FALSE olarak belirlenir ve sonuç reg_transported_test_c_tahmin_logdeğişkeninde saklanır.

reg_transported_test_c_tahmin_log = ifelse(reg_tahmin_log > 0.5, TRUE, FALSE)

Bu kodu R konsolunda çalıştırdığınızda veri setinizin ilk birkaç satırı görüntülenecektir.

head(reg_transported_test_c_tahmin_log)
##     1     2     3     4     5     6 
##  TRUE FALSE  TRUE  TRUE  TRUE FALSE

Bu R kodu, reg_transported_test_c_tahmin_log adlı bir veri setindeki değerleri karakter dizisine dönüştürerek “Transported” adlı bir değişkene atar ve ayrıca test_c_log veri setindeki “PassengerId” sütununu “PassengerId” adlı bir değişkene atar. Ancak, kodu kullanmadan önce veri setlerinin ne tür veriler içerdiğini ve bu dönüşümlerin doğru olup olmadığını kontrol etmek önemlidir.

Transported = as.character(reg_transported_test_c_tahmin_log)
PassengerId = test_c_log$PassengerId

Bu kod, “Transported” değişkenini bir vektör olarak yeniden tanımlar.

Transported = as.vector(Transported)

Bu kod, “PassengerId” ve “Transported” değişkenlerini içeren iki vektörü birleştirerek bir veri çerçevesi oluşturur. “cbind()” fonksiyonu, sütun adlarına göre birleştirme yapar.

submission_regresyon_log = cbind(PassengerId, Transported)

Bu kod, submission_regresyon_log değişkenini bir veri çerçevesine dönüştürür. Eğer submission_regresyon_log önceden bir veri çerçevesi değilse, bu dönüşüm gereksiz olabilir.

submission_regresyon_log =as.data.frame(submission_regresyon_log)

Bu kod, submission_regresyon_log veri çerçevesinin “Transported” sütunundaki metin değerlerini baş harfleri büyük olacak şekilde düzenler

submission_regresyon_log$Transported = str_to_title(submission_regresyon_log$Transported)

Bu kod, submission_regresyon_log veri çerçevesini bir CSV dosyasına yazmak için kullanılır. CSV dosyası, sütun başlıklarıyla birlikte verileri içerir. row.names = FALSE argümanı, satır numaralarının CSV dosyasına yazılmamasını sağlar. quote = FALSE argümanı ise alıntı işaretlerinin kullanılmamasını belirtir.

write.csv(submission_regresyon_log,"submissyon_regresyon_log.csv", row.names = FALSE,quote = FALSE)

##sonuç

##Logistic Regresyon

Bağımlı değişkenin ikili (binary) olduğu durumlarda kullanılan bir istatistiksel yöntemdir. Örneğin, bir olayın olup olmadığını (evet veya hayır, başarılı veya başarısız gibi) tahmin etmek için kullanılır. Bağımsız değişkenler ise sürekli (sayısal) ya da kategorik (sınıflandırılmış) olabilirler. Logistik regresyon, olasılıklar üzerinde çalışır ve bir olayın gerçekleşme şansını tahmin eder.

Bu kod, train veri setinin 2. sütunundan 15. sütununa kadar olan kısmını alarak train_set adında yeni bir veri seti oluşturur. train[2:15] ifadesi, train veri setindeki 2. sütundan 15. sütuna kadar olan sütunları seçer. Bu seçim sonucunda elde edilen veri, train_set adı verilen yeni bir veri setine atanır..

model = lm(y ~ x1 + x2 + x3, data = df)

Bu R kodu, lojistik regresyon modelini glm() fonksiyonuyla oluşturur. formula argümanı, bağımlı değişkenin (Transported) bağımsız değişkenlerle (. ile tüm değişkenler) ilişkisini tanımlar.

logistic = glm(formula = Transported ~ .,
              family = binomial,
              data = train_train[, -c(1)])

Bu kod, logistic adlı lojistik regresyon modelinin özet istatistiklerini görüntüler. summary() fonksiyonu, modelin katsayılarını, p-değerlerini, güven aralıklarını ve diğer istatistikleri sağlar.

summary(logistic)
## 
## Call:
## glm(formula = Transported ~ ., family = binomial, data = train_train[, 
##     -c(1)])
## 
## Coefficients: (1 not defined because of singularities)
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              -4.607e-01  3.588e-01  -1.284  0.19917    
## HomePlanetEuropa          1.556e+00  2.674e-01   5.819 5.91e-09 ***
## HomePlanetMars            5.323e-01  1.103e-01   4.827 1.39e-06 ***
## CryoSleepTRUE             1.285e+00  9.185e-02  13.987  < 2e-16 ***
## DestinationPSO J318.5-22 -5.125e-01  1.297e-01  -3.950 7.80e-05 ***
## DestinationTRAPPIST-1e   -4.904e-01  9.441e-02  -5.194 2.05e-07 ***
## DestinationTRAPPIST-le   -1.471e-01  2.436e-01  -0.604  0.54580    
## Age                      -8.481e-03  2.461e-03  -3.446  0.00057 ***
## VIPTRUE                  -1.650e-01  2.916e-01  -0.566  0.57149    
## RoomService              -1.730e-03  1.136e-04 -15.225  < 2e-16 ***
## FoodCourt                 4.581e-04  4.460e-05  10.271  < 2e-16 ***
## ShoppingMall              5.289e-04  7.559e-05   6.997 2.61e-12 ***
## Spa                      -1.969e-03  1.164e-04 -16.913  < 2e-16 ***
## VRDeck                   -1.902e-03  1.161e-04 -16.392  < 2e-16 ***
## withgroup                 1.206e-01  7.192e-02   1.677  0.09346 .  
## deckB                     1.153e+00  2.912e-01   3.961 7.47e-05 ***
## deckC                     2.481e+00  3.325e-01   7.463 8.48e-14 ***
## deckD                     6.978e-01  3.262e-01   2.139  0.03242 *  
## deckE                     1.029e-01  3.378e-01   0.305  0.76065    
## deckF                     7.739e-01  3.420e-01   2.263  0.02363 *  
## deckG                     3.766e-01  3.511e-01   1.073  0.28345    
## deckT                    -1.184e-01  1.866e+00  -0.063  0.94942    
## sideS                     5.988e-01  6.663e-02   8.987  < 2e-16 ***
## expense                          NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 9038.3  on 6519  degrees of freedom
## Residual deviance: 5600.2  on 6497  degrees of freedom
## AIC: 5646.2
## 
## Number of Fisher Scoring iterations: 7

Bu kod, oluşturduğunuz lojistik regresyon modeli olan logistic kullanılarak yeni veriler üzerinde tahmin yapar. predict() fonksiyonu, modelin öngörülerini yapmak için kullanılır. newdata argümanı, tahminlerin yapılacağı yeni veri setini belirtir. Burada train_test[, -c(1,12)], tahminlerin yapıldığı veri setindeki ilk ve on ikinci sütunlar hariç tüm sütunları içerir.

logistic_tahmin = predict(logistic, newdata = train_test[, -c(1,12)])

Bu kod, logistic_tahmin adlı değişkenin ilk birkaç değerini görüntüler. head() fonksiyonu, belirtilen değişkenin veya veri setinin ilk birkaç satırını döndürür.

head(logistic_tahmin)
##           1           2           3           4           5           6 
##  -1.1175750 -11.0810548   0.9556805  -1.6375160  -0.4294310  -1.6887335

Bu kod, lojistik regresyon modelinin tahminlerine dayanarak, belirli bir kesme noktası (0.5) kullanarak sınıflandırma yapar. Eğer bir gözlem için modelin tahmini 0.5’ten büyükse, bu gözlem “Transported” olarak sınıflandırılır (1), aksi halde “Not Transported” olarak sınıflandırılır (0).

logistic_transported_tahmin = ifelse(logistic_tahmin > 0.5, 1, 0)

Bu kod, logistic_transported_tahmin adlı değişkenin ilk birkaç değerini görüntüler. Bu değişken, lojistik regresyon modelinin tahminlerine dayanarak 0 ve 1 değerleri arasında sınıflandırılmış tahminler içerir.

head(logistic_transported_tahmin)
## 1 2 3 4 5 6 
## 0 0 1 0 0 0

Bu kod, train_test veri setindeki “Transported” sütununda bulunan gerçek değerlere dayalı olarak bir sınıflandırma yapar.

transported_gercek = ifelse(train_test[12] == TRUE, 1, 0)

tidymodels kütüphanesini çağırdınız. Bu kütüphane, veri analizi ve modelleme için kullanılan bir dizi araç ve işlevi içerir. tidymodels, veri ön işleme, modelleme ve sonuçların değerlendirilmesi gibi birçok işlemi kolaylaştıran bir araçlar koleksiyonudur.

library(tidymodels)
## Warning: le package 'tidymodels' a été compilé avec la version R 4.3.3
## ── Attaching packages ────────────────────────────────────── tidymodels 1.2.0 ──
## ✔ broom        1.0.6      ✔ rsample      1.2.1 
## ✔ dials        1.2.1      ✔ tune         1.2.1 
## ✔ infer        1.0.7      ✔ workflows    1.1.4 
## ✔ modeldata    1.3.0      ✔ workflowsets 1.1.0 
## ✔ parsnip      1.2.1      ✔ yardstick    1.3.1 
## ✔ recipes      1.0.10
## Warning: le package 'dials' a été compilé avec la version R 4.3.3
## Warning: le package 'infer' a été compilé avec la version R 4.3.3
## Warning: le package 'modeldata' a été compilé avec la version R 4.3.3
## Warning: le package 'parsnip' a été compilé avec la version R 4.3.3
## Warning: le package 'recipes' a été compilé avec la version R 4.3.3
## Warning: le package 'rsample' a été compilé avec la version R 4.3.3
## Warning: le package 'tune' a été compilé avec la version R 4.3.3
## Warning: le package 'workflows' a été compilé avec la version R 4.3.3
## Warning: le package 'workflowsets' a été compilé avec la version R 4.3.3
## Warning: le package 'yardstick' a été compilé avec la version R 4.3.3
## ── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ──
## ✖ scales::discard() masks purrr::discard()
## ✖ dplyr::filter()   masks stats::filter()
## ✖ recipes::fixed()  masks stringr::fixed()
## ✖ dplyr::lag()      masks stats::lag()
## ✖ yardstick::spec() masks readr::spec()
## ✖ recipes::step()   masks stats::step()
## • Use tidymodels_prefer() to resolve common conflicts.

Bu kod, “transported_gercek” ve “logistic_transported_tahmin” değişkenlerini içeren bir veri çerçevesi oluşturur. cbind() fonksiyonu, iki veya daha fazla vektörü sütun sütun birleştirir. data.frame() fonksiyonu, bir veya daha fazla vektörü bir veri çerçevesine dönüştürür.

result = data.frame(cbind(transported_gercek, logistic_transported_tahmin))

Bu kod, “Transported” ve “logistic_transported_tahmin” sütunlarını faktör değişkenlere dönüştürür. Faktörler, kategorik verileri temsil etmek için kullanılır ve genellikle istatistiksel analizlerde veya modellemede kullanılır.

result$Transported = as.factor(result$Transported)
result$logistic_transported_tahmin = as.factor(result$logistic_transported_tahmin)

Bu kod, tahmin edilen değerlerle gerçek değerler arasındaki doğruluğu hesaplamak için accuracy() fonksiyonunu kullanır. Bu fonksiyon, doğruluk metriklerini hesaplamak için kullanılır ve tahmin edilen ve gerçek değerlerin karşılaştırılmasına dayanır.

accuracy(result, truth = Transported, estimate = logistic_transported_tahmin)
## # A tibble: 1 × 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.786

conf_mat() fonksiyonu, bir karışıklık matrisi oluşturur. Karışıklık matrisi, bir sınıflandırma modelinin performansını değerlendirmek için kullanılır. Gerçek ve tahmin edilen sınıflar arasındaki uygun, yanlış pozitif, yanlış negatif ve yanlış pozitif tahminleri gösterir.

conf_mat(result, truth = Transported, estimate = logistic_transported_tahmin)
##           Truth
## Prediction   0   1
##          0 918 305
##          1 161 789

caret kütüphanesi, sınıflandırma ve regresyon modelleri için önceden işleme, model seçimi, hiperparametre ayarı ve sonuçların değerlendirilmesi gibi bir dizi araç sağlar. Bu kütüphane, veri bilimi projelerinde yaygın olarak kullanılan bir araçtır.

library(caret)

Bu kod, gerçek ve tahmin edilen sınıflar arasındaki karışıklık matrisini hesaplar. table() fonksiyonu, iki vektör arasındaki çapraz frekans tablosunu oluşturur.

cm = table(transported_gercek, logistic_transported_tahmin)

Bu kod, önceden hesaplanmış karışıklık matrisini görüntüler. Karışıklık matrisi, sınıflandırma modelinin gerçek ve tahmin edilen sınıflar arasındaki performansını değerlendirmek için kullanılır.

cm
##                   logistic_transported_tahmin
## transported_gercek   0   1
##                  0 918 161
##                  1 305 789

Bu kod, doğru sınıflandırılan örneklerin (true positive ve true negative) toplamını, toplam örnek sayısına bölerek doğruluk değerini hesaplar. Doğruluk, bir sınıflandırma modelinin doğru tahmin etme yeteneğini ölçen bir metriktir

(918 +789)/(918 +161 + 305 +789)
## [1] 0.7855499

Bu kod, caret paketindeki confusionMatrix() fonksiyonunu kullanarak karışıklık matrisini ve model performansı için çeşitli metrikleri hesaplar.

confusionMatrix(as.factor(transported_gercek), as.factor(logistic_transported_tahmin))
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 918 161
##          1 305 789
##                                           
##                Accuracy : 0.7855          
##                  95% CI : (0.7677, 0.8026)
##     No Information Rate : 0.5628          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.5715          
##                                           
##  Mcnemar's Test P-Value : 3.488e-11       
##                                           
##             Sensitivity : 0.7506          
##             Specificity : 0.8305          
##          Pos Pred Value : 0.8508          
##          Neg Pred Value : 0.7212          
##              Prevalence : 0.5628          
##          Detection Rate : 0.4225          
##    Detection Prevalence : 0.4965          
##       Balanced Accuracy : 0.7906          
##                                           
##        'Positive' Class : 0               
## 

Bu kod, doğru sınıflandırılan örneklerin (true positive ve true negative) toplamını, toplam örnek sayısına bölerek doğruluk değerini hesaplar. Doğruluk, bir sınıflandırma modelinin doğru tahmin etme yeteneğini ölçen bir metriktir.

(918+789)/(161+305+918+789)
## [1] 0.7855499

logistic_bd adlı bir lojistik regresyon modeli oluşturuyorsunuz. Bu model, “Transported” değişkenini diğer bağımsız değişkenlerle ilişkilendirir ve veri setindeki ilk sütunu hariç tutar.

logistic_bd = glm(formula = Transported ~ .,
                  family = binomial,
                  data = train_c[, -c(1)])

Bu kod, logistic_bd adlı lojistik regresyon modelini kullanarak yeni veriler üzerinde tahmin yapar. predict() fonksiyonu, modelin öngörülerini yapmak için kullanılır. newdata argümanı, tahminlerin yapılacağı yeni veri setini belirtir.

logistic_tahmin_bd = predict(logistic_bd, newdata = test_c[, -c(1)])

Bu kod, logistic_tahmin_bd adlı değişkenin değerlerine dayanarak, belirli bir kesme noktası (0.5) kullanarak “TRUE” ve “FALSE” değerleri arasında sınıflandırma yapar. Eğer bir gözlem için modelin tahmini 0.5’ten büyükse, bu gözlem “TRUE” olarak sınıflandırılır (1), aksi halde “FALSE” olarak sınıflandırılır (0).

logistic_transported_test_c_tahmin = ifelse(logistic_tahmin_bd >0.5, TRUE, FALSE )

logistic_transported_test_c_tahmin adlı değişkeni karakter dizisine dönüştürüyorsunuz ve “Transported” adlı bir değişkene atıyorsunuz. Ayrıca, “PassengerId” sütununu “test_c” veri setinden alıp “PassengerId” adlı bir değişkene atıyorsunuz.

Transported = as.character(logistic_transported_test_c_tahmin)
PassengerId = test_c$PassengerId

Bu kod, “Transported” adlı değişkeni bir vektör olarak yeniden tanımlar. Ancak, genellikle bir değişken zaten bir vektör olarak tanımlanmışsa, onu tekrar vektör olarak tanımlamak gerekli değildir.

Transported=as.vector(Transported)

Bu kod, “PassengerId” ve “Transported” değişkenlerini içeren bir veri çerçevesi oluşturur. cbind() fonksiyonu, sütun başlıklarına göre birleştirme yapar.

submission_logistic = cbind(PassengerId, Transported)

Bu kod, submission_logistic değişkenini bir veri çerçevesine dönüştürür. Eğer submission_logistic önceden bir veri çerçevesi değilse, bu dönüşüm gereksiz olabilir. Ancak, bazı durumlarda, belirli bir veri yapısına uygun olarak kullanmak isteyebilirsiniz.

submission_logistic = as.data.frame(submission_logistic)

Bu kod, “Transported” sütunundaki metin değerlerinin baş harflerini büyük yapar. Bu işlev genellikle kategorik verilerin düzenlenmesinde veya raporlama için veri hazırlığı aşamasında kullanılır.

submission_logistic$Transported = str_to_title(submission_logistic$Transported)

Bu kod, submission_logistic veri çerçevesini bir CSV dosyasına yazmak için kullanılır.

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

##sonuç

Bu kod, train_c_log veri seti üzerinde bir lojistik regresyon modeli olan logistic_bd modelini oluşturur. Bağımlı değişken olarak “Transported” değişkenini ve bağımsız değişken olarak diğer tüm değişkenleri kullanır. Ayrıca, family = binomial argümanıyla lojistik regresyon modelini belirtir.

logistic_bd = glm(formula = Transported ~ .,
                  family = binomial,
                  data = train_c_log[, -c(1)])

Bu kod, logistic_bd adlı lojistik regresyon modelini kullanarak yeni veriler üzerinde tahmin yapar. predict() fonksiyonu, modelin öngörülerini yapmak için kullanılır.

logistic_tahmin_bd = predict(logistic_bd, newdata = test_c_log[, -c(1)])

Bu kod, logistic_tahmin_bd adlı değişkenin değerlerine dayanarak, belirli bir kesme noktası (0.5) kullanarak “TRUE” ve “FALSE” değerleri arasında sınıflandırma yapar.

logistic_transported_test_c_tahmin = ifelse(logistic_tahmin_bd >0.5, TRUE, FALSE )

logistic_transported_test_c_tahmin adlı değişkeni karakter dizisine dönüştürüyorsunuz ve “Transported” adlı bir değişkene atıyorsunuz. Ayrıca, “PassengerId” sütununu “test_c” veri setinden alıp “PassengerId” adlı bir değişkene atıyorsunuz.

Transported = as.character(logistic_transported_test_c_tahmin)
PassengerId = test_c$PassengerId

Bu kod, “Transported” adlı değişkeni bir vektör olarak yeniden tanımlar. Ancak, genellikle bir değişken zaten bir vektör olarak tanımlanmışsa, onu tekrar vektör olarak tanımlamak gerekli değildir

Transported=as.vector(Transported)

Bu kod, “PassengerId” ve “Transported” değişkenlerini içeren bir veri çerçevesi oluşturur. cbind() fonksiyonu, sütun başlıklarına göre birleştirme yapar

submission_llogistic = cbind(PassengerId, Transported)

Bu kod, submission_logistic değişkenini bir veri çerçevesine dönüştürür. Eğer submission_logistic önceden bir veri çerçevesi değilse, bu dönüşüm gereksiz olabilir. Ancak, bazı durumlarda, belirli bir veri yapısına uygun olarak kullanmak isteyebilirsiniz.

submission_llogistic = as.data.frame(submission_logistic)

Bu kod, “submission_logistic” veri çerçevesindeki “Transported” sütunundaki metin değerlerinin baş harflerini büyük yapar. Bu işlev genellikle kategorik verilerin düzenlenmesinde veya raporlama için veri hazırlığı aşamasında kullanılır.

submission_llogistic$Transported = str_to_title(submission_logistic$Transported)

Bu kod, “submission_llogistic” veri çerçevesini bir CSV dosyasına yazmak için kullanılır. CSV dosyası, sütun başlıklarıyla birlikte verileri içerir. row.names = FALSE argümanı, satır numaralarının CSV dosyasına yazılmamasını sağlar. quote = FALSE argümanı ise alıntı işaretlerinin kullanılmamasını belirtir.

write.csv(submission_logistic, "submission_llogistic.csv", row.names =FALSE, quote=FALSE)

##sonuç

Naive Bayes

Naive Bayes, sınıflandırma görevlerinde kullanılan basit ve etkili bir istatistiksel algoritmadır. Bu yöntem, Bayes teoremine dayanır ve her özelliğin (feature) diğerlerinden bağımsız olduğu varsayımı üzerine kuruludur (bu yüzden “naive” yani “saf” adını alır). Naive Bayes, özellikle metin sınıflandırma gibi büyük veri setlerinde hızlı ve doğru sonuçlar verebilir. E-posta spam tespiti, duyarlılık analizi ve diğer birçok sınıflandırma problemlerinde yaygın olarak kullanılır.

Bu kod, e1071 paketi ile Naive Bayes modelini eğitir ve testing_set üzerinde tahmin yapar, sonuçları bir veri çerçevesine dönüştürür.

e1071 kütüphanesi, destek vektör makineleri (SVM) ve diğer istatistiksel metotları içeren bir R paketidir. Bu paket, sınıflandırma, regresyon, kümeleme ve yoğunluk tahmini gibi bir dizi makine öğrenimi ve istatistiksel teknikleri uygulamak için kullanılır.

library(e1071)

Bu kod, naive Bayes sınıflandırma modelini oluşturur. naiveBayes() fonksiyonu, veriye dayalı olarak bir sınıflandırma modeli oluşturur.

fit_nb = naiveBayes(Transported ~ ., data =train_train[, -1])

fit_nb değişkeni, oluşturulan naive Bayes sınıflandırma modelini temsil eder

fit_nb
## 
## Naive Bayes Classifier for Discrete Predictors
## 
## Call:
## naiveBayes.default(x = X, y = Y, laplace = laplace)
## 
## A-priori probabilities:
## Y
##    FALSE     TRUE 
## 0.496319 0.503681 
## 
## Conditional probabilities:
##        HomePlanet
## Y           Earth    Europa      Mars
##   FALSE 0.6236094 0.1739802 0.2024104
##   TRUE  0.4631547 0.3279537 0.2088916
## 
##        CryoSleep
## Y           FALSE      TRUE
##   FALSE 0.8702101 0.1297899
##   TRUE  0.4336175 0.5663825
## 
##        Destination
## Y       55 Cancri e PSO J318.5-22 TRAPPIST-1e TRAPPIST-le
##   FALSE  0.16069221    0.09363412  0.72404203  0.02163164
##   TRUE   0.24969549    0.09043849  0.64007308  0.01979294
## 
##        Age
## Y           [,1]     [,2]
##   FALSE 30.01092 13.45222
##   TRUE  27.85527 14.87646
## 
##        VIP
## Y            FALSE       TRUE
##   FALSE 0.97126082 0.02873918
##   TRUE  0.98142509 0.01857491
## 
##        RoomService
## Y            [,1]     [,2]
##   FALSE 402.20365 916.6547
##   TRUE   56.93484 246.8105
## 
##        FoodCourt
## Y           [,1]     [,2]
##   FALSE 396.2923 1258.123
##   TRUE  514.8018 1918.620
## 
##        ShoppingMall
## Y           [,1]     [,2]
##   FALSE 160.2250 432.1103
##   TRUE  182.7135 748.5867
## 
##        Spa
## Y            [,1]      [,2]
##   FALSE 561.16193 1554.2636
##   TRUE   61.11571  264.0556
## 
##        VRDeck
## Y            [,1]      [,2]
##   FALSE 533.98733 1542.8703
##   TRUE   69.07186  295.0542
## 
##        withgroup
## Y            [,1]      [,2]
##   FALSE 0.3952410 0.4889780
##   TRUE  0.4960414 0.5000605
## 
##        deck
## Y                  A            B            C            D            E
##   FALSE 0.0296662546 0.0540791100 0.0574783684 0.0661310260 0.1344252163
##   TRUE  0.0310596833 0.1385505481 0.1199756395 0.0490255786 0.0676004872
##        deck
## Y                  F            G            T
##   FALSE 0.3637206428 0.2932632880 0.0012360939
##   TRUE  0.2828867235 0.3105968331 0.0003045067
## 
##        side
## Y               P         S
##   FALSE 0.5571693 0.4428307
##   TRUE  0.4448843 0.5551157
## 
##        expense
## Y            [,1]     [,2]
##   FALSE 2053.8702 3224.219
##   TRUE   884.6376 2307.962

Bu kod, fit_nb adlı naive Bayes sınıflandırma modelini kullanarak yeni veriler üzerinde tahmin yapar. predict() fonksiyonu, modelin öngörülerini yapmak için kullanılır.

pred_nb = predict(fit_nb, newdata = train_test[, -c(1, 12)], type = "raw") %>%
  data.frame()

Bu kod, “pred_nb” adlı veri çerçevesinin ilk altı satırını görüntüler. Bu veri çerçevesi, naive Bayes modelinin tahmin ettiği sınıfların olasılık tahminlerini içerir. head() fonksiyonu, bir veri çerçevesinin veya veri kümesinin ilk birkaç satırını görüntüler.

head(pred_nb)
##       FALSE.         TRUE.
## 1 0.22238032  7.776197e-01
## 2 1.00000000 8.663595e-135
## 3 0.02729931  9.727007e-01
## 4 0.59276719  4.072328e-01
## 5 0.02410104  9.758990e-01
## 6 0.38468138  6.153186e-01

Bu kod, naive Bayes modelinin tahmin ettiği olasılıklara dayanarak sınıflandırma yapar

Transported_pred_nb = ifelse(pred_nb$TRUE. > 0.5, 1, 0)

Bu kod, “Transported_pred_nb” adlı değişkenin ilk altı değerini görüntüler. Bu değişken, naive Bayes modelinin tahmin ettiği sınıfları temsil eder

head(Transported_pred_nb)
## [1] 1 0 1 0 1 1

Bu kod, “train_test” veri setindeki “Transported” sütununu kontrol eder. Eğer bir gözlem “TRUE” ise (yani, 1 ise), bu gözlem “1” olarak sınıflandırılır. Aksi takdirde, gözlem “0” olarak sınıflandırılır.

Transported_train_test = ifelse(train_test[12] == TRUE, 1, 0)

Bu kod, “Transported_train_test” adlı değişkenin ilk altı değerini görüntüler. Bu değişken, “train_test” veri setindeki “Transported” sütununu temsil eder.

head(Transported_train_test)
##      Transported
## [1,]           1
## [2,]           0
## [3,]           1
## [4,]           0
## [5,]           0
## [6,]           0

Bu kod, “Transported_train_test” ve “Transported_pred_nb” değişkenlerini kullanarak bir karşılaştırma tablosu oluşturur.

cm = table(Transported_train_test, Transported_pred_nb)
cm
##                       Transported_pred_nb
## Transported_train_test    0    1
##                      0  480  599
##                      1   76 1018

Bu kod, doğru sınıflandırılmış gözlemlerin toplam sayısını toplam gözlem sayısına bölerek doğruluk oranını hesaplar.

(480 + 1018)/(480 +599 +76 +1018)
## [1] 0.6893695

Bu kod, “train_c” veri setindeki bağımsız değişkenlere dayalı olarak bir naive Bayes sınıflandırma modeli olan “nb”yi oluşturur. “Transported” değişkeni sınıflandırma hedefi olarak kullanılırken, diğer değişkenler tahminlerin yapılması için kullanılır.

nb = naiveBayes(Transported ~ ., data = train_c[, -1])

Bu kod, oluşturulan naive Bayes modelini (“nb”) kullanarak yeni veriler üzerinde tahmin yapar. predict() fonksiyonu, modelin öngörülerini yapmak için kullanılır. newdata argümanı, tahminlerin yapılacağı yeni veri setini belirtir.

pred_nb = predict(nb, newdata = test_c, type = "raw") %>% data.frame()

Bu kod, “pred_nb” veri çerçevesindeki “TRUE.” sütunundaki olasılıklara dayanarak sınıflandırma yapar. Eğer bir gözlem için “TRUE” sınıfının tahmin edilen olasılığı 0.5’ten büyükse, bu gözlem “TRUE” olarak sınıflandırılır.

Transported_pred_nb = ifelse(pred_nb$TRUE. > 0.5, TRUE, FALSE)

Bu kod, naive Bayes modelinin tahminlerini içeren bir CSV dosyası oluşturur. İlk olarak, “Transported_pred_nb” değişkeni bir karakter dizisine dönüştürülür ve “Transported” adı altında atanır. Daha sonra, “test_c” veri setinden “PassengerId” sütunu alınır.

Transported = as.character(Transported_pred_nb)
PassengerId = test_c$PassengerId
Transported = as.vector(Transported)
sample_submission = cbind(PassengerId, Transported)
sample_submission = as.data.frame(sample_submission)
sample_submission$Transported = str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_nb.csv", row.names = FALSE, quote = FALSE)

##sonuç

SVM(Destek Vektor Makineleri)

SVM (Support Vector Machine), veri noktalarını en iyi ayıran karar sınırını (hiper düzlem) bulmaya çalışan bir makine öğrenmesi algoritmasıdır. Özellikle sınıflandırma problemlerinde kullanılır. Algoritma, farklı sınıflara ait veri noktalarını birbirinden ayıran hiper düzlemi en geniş marjla bulur. SVM, doğrusal olmayan sınıflandırma için çekirdek hilelerini (kernel tricks) kullanarak yüksek boyutlu uzaylarda da etkili bir şekilde çalışabilir.

SVM Modeli Oluşturma: ‘Transported’ değişkenini, eğitim verisi (training_set) kullanarak tahmin etmek için doğrusal çekirdekli bir sınıflandırma SVM modeli oluşturuyorsunuz.

Tahmin Yapma: Oluşturduğunuz SVM modeli (fit_svm) ile yeni veri seti (testing_set) için ‘Transported’ durumunu tahmin ediyorsunuz.

Tahminleri Veri Çerçevesine Dönüştürme: Tahminler, preds adında bir veri çerçevesine dönüştürülüyor.

Bu, makine öğrenmesinde sıkça kullanılan bir sınıflandırma yöntemidir.

Bu kod, destek vektör makinesi (SVM) sınıflandırma modelini (“fit_svm”) oluşturur. svm() fonksiyonu, veriye dayalı olarak bir SVM modeli oluşturur.

fit_svm = svm(Transported ~ ., data = train_train[, -1], 
              type= 'C-classification',
              kernel = 'linear')

preds = predict(fit_svm, newdata = train_test[, -c(1, 12)], type = "raw") %>%
  data.frame()

Bu kod, “preds” adlı veri çerçevesinin ilk altı satırını görüntüler. Bu veri çerçevesi, SVM modelinin tahmin ettiği sınıfların olasılık tahminlerini içerir.

head(preds)
##       .
## 1 FALSE
## 2 FALSE
## 3  TRUE
## 4 FALSE
## 5 FALSE
## 6 FALSE

Bu kod, SVM modelinin tahminlerini ve gerçek sınıfları karşılaştırmak için bir karşılaştırma tablosu oluşturur.

Transported_pred_svm = ifelse(preds$. == TRUE, 1, 0)
cm = table(Transported_train_test, Transported_pred_svm)
cm
##                       Transported_pred_svm
## Transported_train_test   0   1
##                      0 836 243
##                      1 180 914

Bu kod, doğru sınıflandırılmış gözlemlerin toplam sayısını toplam gözlem sayısına bölerek doğruluk oranını hesaplar.

(836 + 914)/(836 +243 +180 + 914)
## [1] 0.8053382

Bu kod, destek vektör makinesi (SVM) sınıflandırma modelini (“fit_svm”) oluşturur. svm() fonksiyonu, veriye dayalı olarak bir SVM modeli oluşturur

fit_svm = svm(Transported ~ ., data = train_c[, -1],
              type= 'C-classification',
              kernel = 'linear')

preds = predict(fit_svm, newdata = test_c, type ="raw")%>%
  data.frame()

Bu kod, “preds” adlı veri çerçevesinin ilk altı satırını görüntüler. Bu veri çerçevesi, SVM modelinin tahmin ettiği sınıfların olasılık tahminlerini içerir.

head(preds)
##       .
## 1  TRUE
## 2 FALSE
## 3  TRUE
## 4  TRUE
## 5  TRUE
## 6  TRUE

Bu kod, “preds” veri çerçevesindeki tahmin edilen sınıfların “TRUE.” sütunundaki değerlere dayanarak sınıflandırma yapar.

Transported_pred_svm = ifelse(preds$. == TRUE, TRUE, FALSE)

Bu kod, SVM modelinin tahminlerini içeren bir CSV dosyası oluşturur. İlk olarak, “Transported_pred_svm” değişkeni bir karakter dizisine dönüştürülür ve “Transported” adı altında atanır.

Transported = as.character(Transported_pred_svm)
PassengerId = test_c$PassengerId
Transported = as.vector(Transported)
sample_submission = cbind(PassengerId, Transported)
sample_submission = as.data.frame(sample_submission)
sample_submission$Transported = str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_svm.csv", row.names = FALSE, quote = FALSE)

##sonuç

SVM radial (kernel)

SVM (Destek Vektör Makineleri) radial (radyal) çekirdek (kernel) kullanımı, verileri sınıflandırmak için karmaşık sınırlar oluşturabilen bir yöntemdir. Radial çekirdek, veri noktalarını yüksek boyutlu bir uzaya dönüştürerek, doğrusal olarak ayrılamayan veri setlerinin doğrusal olarak ayrılabilir hale gelmesini sağlar. Bu çekirdek, özellikle veri noktaları arasındaki benzerlikleri ölçmek için uzaklık temelli bir işlev kullanır ve genellikle karmaşık veri yapılarında iyi performans gösterir.

Svm_ker_son, train_set veri seti üzerinde eğitilen ve yanıt değişkeni olarak Transported kullanılan, radyal temel fonksiyonlu (RBF) bir Sınıflandırma için Destek Vektör Makinesi (SVM) modelidir.

Bu kod, radial kernel kullanarak bir SVM sınıflandırma modeli oluşturur ve bu modeli kullanarak yeni veriler üzerinde tahminler yapar.

fit_svm = svm(Transported ~ ., data = train_train[, -1],
              type= 'C-classification',
              kernel = 'radial')

preds = predict(fit_svm, newdata = train_test[, -c(1, 12)], type ="raw")%>%
  data.frame()

Bu kod, SVM modelinin tahminlerini ve gerçek sınıfları karşılaştırmak için bir karşılaştırma tablosu oluşturur. İlk olarak, “preds” veri çerçevesindeki tahmin edilen sınıfların “.1” sütunundaki değerlere dayanarak sınıflandırma yapar.

Transported_pred_svm = ifelse(preds$. == TRUE, 1, 0)
cm = table(Transported_train_test, Transported_pred_svm)
cm
##                       Transported_pred_svm
## Transported_train_test   0   1
##                      0 849 230
##                      1 202 892

Bu kod, doğru sınıflandırılmış gözlemlerin toplam sayısını toplam gözlem sayısına bölerek doğruluk oranını hesaplar.

(849 +892)/(892 +849 +202 +230)
## [1] 0.8011965
fit_svm = svm(Transported ~ ., data = train_c[, -1],
              type= 'C-classification',
              kernel = 'radial')

preds = predict(fit_svm, newdata = test_c, type ="raw")%>%
  data.frame()

Bu kod, radial kernel kullanarak bir SVM sınıflandırma modeli oluşturur ve bu modeli kullanarak yeni veriler üzerinde tahminler yapar. Aşağıda adım adım açıklama bulunmaktadır:

Transported_pred_svm = ifelse(preds$. == TRUE, TRUE, FALSE)

Bu kod, SVM modelinin radial kernel kullanarak tahmin ettiği sınıfları içeren bir CSV dosyası oluşturur.

Transported = as.character(Transported_pred_svm)
PassengerId = test_c$PassengerId
Transported = as.vector(Transported)
sample_submission = cbind(PassengerId, Transported)
sample_submission = as.data.frame(sample_submission)
sample_submission$Transported = str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_svm_radial.csv", row.names = FALSE, quote = FALSE)

##sonuç

Decision Trees

rpart fonksiyonu, “Transported” değişkenini diğer tüm değişkenlere bağlı olarak tahmin etmek üzere eğitilmiş bir karar ağacı modelini oluşturuyor. Bu model, “training_set” adlı bir veri seti üzerinde eğitilmiş ve sonuçlarını içermektedir. Complexity Parameters (CP) ve Splits:

Karar ağacının karmaşıklığını kontrol etmek için kullanılan “CP” değerleri gösterilmektedir. Bu değerler, ağacın genişletilme veya budanma düzeyini belirler. Ağacın kaç kere bölündüğü, her bölünme noktasındaki etkileşimli değişkenleri ve bu bölünmelerin model performansındaki iyileşmeyi gösterir. Variable Importance (Değişken Önem Sıralaması):

Modeldeki değişkenlerin önem sıralamasını gösterir. “CryoSleep,” “Spa,” “VRDeck,” gibi değişkenlerin model tahminlerine olan katkıları sıralanmıştır. Bu, hangi özelliklerin modelin başarısına daha fazla etki ettiğini anlamak için önemli bir bilgidir. Node ve Splits (Düğüm ve Bölünmeler):

Ağacın her bir düğümü ve bu düğümlerdeki bölünme kriterleri açıklanmıştır. Örneğin, “CryoSleep < 0.5” ifadesi, bu düğümdeki bölünme kriterini gösterir. Her düğümün altında, o düğüme düşen gözlem sayısı, beklenen hata oranı ve sınıflandırma için tahmin edilen olasılıklar gibi bilgiler bulunmaktadır. Surrogate Splits:

Eğer bir değişken bölünme kriteri olarak kullanılamıyorsa, yerine kullanılan “yedek” (surrogate) değişkenler gösterilir. Bu değişkenler, orijinal değişkenin yerini alabilen alternatiflerdir.

Bu kod, “ggplot2” paketini kullanarak bir nokta grafiği oluşturur. Grafiğin x ekseninde “HomePlanet” değişkeni, y ekseninde “deck” değişkeni yer alır. Noktaların rengi, “Transported” değişkenine göre belirlenir. Ayrıca, noktaların şekli de “Transported” değişkenine göre belirlenir.

P = ggplot(train_train, aes(x=HomePlanet, y=deck, color=factor(Transported))) + 
  geom_point(aes(shape=factor(Transported)), size=3) +
  scale_color_viridis_d() + labs(title = "", x="HomePlanet", y="deck") + theme_minimal() + theme(legend.position ="top")
P

Bu kod, rpart, rpart.plot, randomForest ve caret paketlerini yükler. rpart ve rpart.plot, karar ağaçları oluşturmak ve görselleştirmek için kullanılırken, randomForest rastgele orman modeli oluşturmak için kullanılır. caret paketi ise model eğitimi ve performans değerlendirmesi için genel araçlar sağlar.

library(rpart)
library(rpart.plot)
library(randomForest)
library(caret)

Bu kod, rpart paketini kullanarak bir karar ağacı modeli oluşturur ve oluşturulan modelin özet istatistiklerini görüntüler.

fit_tree = rpart::rpart(Transported ~ ., data = train_train[, -1])
summary(fit_tree)
## Call:
## rpart::rpart(formula = Transported ~ ., data = train_train[, 
##     -1])
##   n= 6520 
## 
##           CP nsplit rel error    xerror         xstd
## 1 0.23321359      0 1.0000000 1.0001811 0.0001977604
## 2 0.04905507      1 0.7667864 0.7671015 0.0103212807
## 3 0.02807107      2 0.7177313 0.7180892 0.0090936774
## 4 0.02784643      3 0.6896603 0.7039381 0.0095638265
## 5 0.01770479      4 0.6618138 0.6661699 0.0097007659
## 6 0.01381587      5 0.6441090 0.6496207 0.0100644975
## 7 0.01194576      6 0.6302932 0.6389139 0.0102048399
## 8 0.01164524      7 0.6183474 0.6310762 0.0102269497
## 9 0.01000000      8 0.6067022 0.6242632 0.0102752753
## 
## Variable importance
##      expense    CryoSleep    FoodCourt          Spa       VRDeck  RoomService 
##           23           17           13           12           11            9 
##         deck   HomePlanet ShoppingMall          Age  Destination 
##            5            5            2            1            1 
## 
## Node number 1: 6520 observations,    complexity param=0.2332136
##   mean=0.503681, MSE=0.2499865 
##   left son=2 (3795 obs) right son=3 (2725 obs)
##   Primary splits:
##       expense     < 0.5     to the right, improve=0.2332136, (0 missing)
##       CryoSleep   < 0.5     to the left,  improve=0.2095384, (0 missing)
##       RoomService < 0.5     to the right, improve=0.1254121, (0 missing)
##       Spa         < 0.5     to the right, improve=0.1142180, (0 missing)
##       VRDeck      < 0.5     to the right, improve=0.1084074, (0 missing)
##   Surrogate splits:
##       CryoSleep   < 0.5     to the left,  agree=0.932, adj=0.837, (0 split)
##       Spa         < 0.5     to the right, agree=0.784, adj=0.484, (0 split)
##       FoodCourt   < 0.5     to the right, agree=0.770, adj=0.451, (0 split)
##       VRDeck      < 0.5     to the right, agree=0.768, adj=0.444, (0 split)
##       RoomService < 0.5     to the right, agree=0.757, adj=0.419, (0 split)
## 
## Node number 2: 3795 observations,    complexity param=0.02807107
##   mean=0.2990777, MSE=0.2096302 
##   left son=4 (3243 obs) right son=5 (552 obs)
##   Primary splits:
##       FoodCourt    < 1331    to the left,  improve=0.05751186, (0 missing)
##       ShoppingMall < 627.5   to the left,  improve=0.04530804, (0 missing)
##       RoomService  < 365.5   to the right, improve=0.04440387, (0 missing)
##       Spa          < 257.5   to the right, improve=0.03347453, (0 missing)
##       VRDeck       < 721     to the right, improve=0.02290457, (0 missing)
##   Surrogate splits:
##       expense    < 5981    to the left,  agree=0.885, adj=0.210, (0 split)
##       deck       splits as  RRRLLLLL,    agree=0.884, adj=0.203, (0 split)
##       HomePlanet splits as  LRL,         agree=0.878, adj=0.159, (0 split)
##       Spa        < 8955.5  to the left,  agree=0.856, adj=0.009, (0 split)
##       VRDeck     < 11692   to the left,  agree=0.856, adj=0.009, (0 split)
## 
## Node number 3: 2725 observations,    complexity param=0.04905507
##   mean=0.7886239, MSE=0.1666963 
##   left son=6 (1448 obs) right son=7 (1277 obs)
##   Primary splits:
##       deck        splits as  RRRRLRL-,    improve=0.17601740, (0 missing)
##       HomePlanet  splits as  LRR,         improve=0.12704810, (0 missing)
##       Destination splits as  RLLR,        improve=0.02774089, (0 missing)
##       CryoSleep   < 0.5     to the left,  improve=0.02268236, (0 missing)
##       side        splits as  LR,          improve=0.01498707, (0 missing)
##   Surrogate splits:
##       HomePlanet  splits as  LRR,         agree=0.934, adj=0.860, (0 split)
##       Age         < 24.5    to the left,  agree=0.626, adj=0.201, (0 split)
##       Destination splits as  RLLR,        agree=0.596, adj=0.137, (0 split)
##       withgroup   < 0.5     to the left,  agree=0.583, adj=0.110, (0 split)
##       VIP         < 0.5     to the left,  agree=0.538, adj=0.014, (0 split)
## 
## Node number 4: 3243 observations,    complexity param=0.02784643
##   mean=0.2537774, MSE=0.1893744 
##   left son=8 (2577 obs) right son=9 (666 obs)
##   Primary splits:
##       ShoppingMall < 541.5   to the left,  improve=0.07390355, (0 missing)
##       RoomService  < 365.5   to the right, improve=0.03464407, (0 missing)
##       Spa          < 240.5   to the right, improve=0.03327259, (0 missing)
##       VRDeck       < 114     to the right, improve=0.02784287, (0 missing)
##       expense      < 2867.5  to the right, improve=0.01811461, (0 missing)
##   Surrogate splits:
##       expense < 18644   to the left,  agree=0.795, adj=0.003, (0 split)
## 
## Node number 5: 552 observations,    complexity param=0.01770479
##   mean=0.5652174, MSE=0.2457467 
##   left son=10 (123 obs) right son=11 (429 obs)
##   Primary splits:
##       Spa       < 1372.5  to the right, improve=0.21272970, (0 missing)
##       VRDeck    < 1063.5  to the right, improve=0.17089500, (0 missing)
##       expense   < 5395    to the right, improve=0.06611166, (0 missing)
##       FoodCourt < 2513    to the left,  improve=0.02780045, (0 missing)
##       deck      splits as  LLRLLRRL,    improve=0.02705865, (0 missing)
##   Surrogate splits:
##       expense     < 12647   to the right, agree=0.790, adj=0.057, (0 split)
##       Age         < 13.5    to the left,  agree=0.779, adj=0.008, (0 split)
##       RoomService < 3895.5  to the right, agree=0.779, adj=0.008, (0 split)
## 
## Node number 6: 1448 observations
##   mean=0.6277624, MSE=0.2336768 
## 
## Node number 7: 1277 observations
##   mean=0.9710258, MSE=0.02813466 
## 
## Node number 8: 2577 observations,    complexity param=0.01194576
##   mean=0.193636, MSE=0.1561411 
##   left son=16 (2067 obs) right son=17 (510 obs)
##   Primary splits:
##       FoodCourt   < 456.5   to the left,  improve=0.04838893, (0 missing)
##       expense     < 1447.5  to the right, improve=0.04016842, (0 missing)
##       HomePlanet  splits as  RLL,         improve=0.02539308, (0 missing)
##       Spa         < 537.5   to the right, improve=0.01895890, (0 missing)
##       RoomService < 400.5   to the right, improve=0.01706521, (0 missing)
##   Surrogate splits:
##       expense < 12373   to the left,  agree=0.804, adj=0.008, (0 split)
##       Spa     < 13650   to the left,  agree=0.803, adj=0.006, (0 split)
##       VRDeck  < 10123.5 to the left,  agree=0.802, adj=0.002, (0 split)
##       deck    splits as  LLLLLLLR,    agree=0.802, adj=0.002, (0 split)
## 
## Node number 9: 666 observations
##   mean=0.4864865, MSE=0.2498174 
## 
## Node number 10: 123 observations
##   mean=0.1382114, MSE=0.119109 
## 
## Node number 11: 429 observations,    complexity param=0.01381587
##   mean=0.6876457, MSE=0.2147891 
##   left son=22 (143 obs) right son=23 (286 obs)
##   Primary splits:
##       VRDeck      < 611     to the right, improve=0.24438400, (0 missing)
##       Spa         < 225     to the right, improve=0.05300377, (0 missing)
##       FoodCourt   < 3119.5  to the left,  improve=0.05168044, (0 missing)
##       side        splits as  LR,          improve=0.04004566, (0 missing)
##       RoomService < 1719.5  to the right, improve=0.03930897, (0 missing)
##   Surrogate splits:
##       expense   < 6032    to the right, agree=0.702, adj=0.105, (0 split)
##       Age       < 53.5    to the right, agree=0.674, adj=0.021, (0 split)
##       FoodCourt < 12128.5 to the right, agree=0.671, adj=0.014, (0 split)
## 
## Node number 16: 2067 observations
##   mean=0.1504596, MSE=0.1278215 
## 
## Node number 17: 510 observations,    complexity param=0.01164524
##   mean=0.3686275, MSE=0.2327413 
##   left son=34 (204 obs) right son=35 (306 obs)
##   Primary splits:
##       expense    < 1447.5  to the right, improve=0.15990760, (0 missing)
##       VRDeck     < 86.5    to the right, improve=0.10060710, (0 missing)
##       HomePlanet splits as  RLL,         improve=0.07952538, (0 missing)
##       Spa        < 500     to the right, improve=0.07353369, (0 missing)
##       deck       splits as  LLLLRRRL,    improve=0.05075444, (0 missing)
##   Surrogate splits:
##       HomePlanet splits as  RLL,         agree=0.873, adj=0.681, (0 split)
##       deck       splits as  LLLLRRRL,    agree=0.839, adj=0.598, (0 split)
##       VRDeck     < 213.5   to the right, agree=0.818, adj=0.544, (0 split)
##       Spa        < 219.5   to the right, agree=0.792, adj=0.480, (0 split)
##       FoodCourt  < 907     to the right, agree=0.722, adj=0.304, (0 split)
## 
## Node number 22: 143 observations
##   mean=0.3636364, MSE=0.231405 
## 
## Node number 23: 286 observations
##   mean=0.8496503, MSE=0.1277446 
## 
## Node number 34: 204 observations
##   mean=0.1323529, MSE=0.1148356 
## 
## Node number 35: 306 observations
##   mean=0.5261438, MSE=0.2493165

Bu kod, rpart.plot paketini kullanarak oluşturulan karar ağacını görselleştirir

rpart.plot(fit_tree)

Bu kod, oluşturulan karar ağacı modelini kullanarak yeni verilerde tahminler yapar.

preds= predict(fit_tree, newdata = train_test[, -c(1,12)]) %>%
  data.frame()

Bu kod, oluşturulan tahminlerin ilk altı satırını görüntüler.

head(preds)
##           .
## 1 0.1504596
## 2 0.1382114
## 3 0.8496503
## 4 0.1504596
## 5 0.4864865
## 6 0.1504596

Bu kod, oluşturulan karar ağacı modeli tarafından yapılan tahminlerin ve gerçek değerlerin karşılaştırıldığı bir çapraz tabloyu oluşturur

Transported_pred_tree = ifelse(preds$. >0.5, 1, 0)
cm = table(Transported_train_test, Transported_pred_tree)
cm
##                       Transported_pred_tree
## Transported_train_test   0   1
##                      0 807 272
##                      1 237 857

Bu kod, doğru sınıflandırılmış gözlemlerin toplam sayısını toplam gözlem sayısına bölerek doğruluk oranını hesaplar.

(807 +857)/(807 +857 +272 +237)
## [1] 0.7657616

Bu kod, oluşturulan karar ağacı modelini kullanarak test verilerinde tahminler yapar.

fit_tree = rpart::rpart(Transported ~ ., data = train_c[, -1])

preds= predict(fit_tree, newdata = test_c) %>%
  data.frame()

Bu kod, karar ağacı modeli tarafından yapılan tahminlerin 0.5’ten büyük olup olmadığını kontrol eder

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

Bu kodu çalıştırdığınızda, “sub_tree.csv” adlı bir CSV dosyası oluşturulur ve bu dosyaya karar ağacı modelinin tahminleri yazılır. Bu dosya daha sonra başka bir programda açılabilir veya veri analizi için kullanılabilir.

Transported = as.character(Transported_pred_tree)
PassengerId = test_c$PassengerId
Transported = as.vector(Transported)
sample_submission = cbind(PassengerId, Transported)
sample_submission = as.data.frame(sample_submission)
sample_submission$Transported = str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_tree.csv", row.names = FALSE, quote = FALSE)

##sonuç

RANDOM FOREST

Random Forest, birden fazla karar ağacını bir araya getirerek çalışan bir makine öğrenmesi algoritmasıdır. Her ağaç birbirinden bağımsız olarak ve rastgele seçilen veri alt kümeleri üzerinde eğitilir. Sonuçta, tüm ağaçların tahminleri birleştirilerek daha doğru ve kararlı bir tahmin elde edilir. Bu yöntem hem sınıflandırma hem de regresyon problemlerinde kullanılır.

Bu kod, train_set veri seti kullanılarak Transported hedef değişkeni ile bir Random Forest modeli (fit_rf) oluşturur. Transported ~ . ifadesi, Transported’ı bağımlı değişken ve diğer tüm sütunları bağımsız değişken olarak kullanılacağını belirtir.

Bu kodu çalıştırdığınızda, veri setinizdeki bağımsız değişkenlerin “Transported” değişkenine olan etkisini göz önünde bulundurarak bir rastgele orman modeli oluşturulur.

fit_forest = randomForest(Transported ~ ., data = train_train[, -1])

Bu kod, oluşturulan rastgele orman modelinin değişken önem sıralamasını görüntüler

fit_forest$importance
##              IncNodePurity
## HomePlanet       48.125593
## CryoSleep       107.989293
## Destination      30.575915
## Age              91.836683
## VIP               2.516955
## RoomService     125.936343
## FoodCourt       113.623386
## ShoppingMall     96.731658
## Spa             131.332461
## VRDeck          122.410460
## withgroup        12.925079
## deck             90.196804
## side             22.439063
## expense         238.242509

Bu kodu çalıştırdığınızda, oluşturulan rastgele orman modelinin değişken önem sıralamasının bir grafik halini görüntülersiniz. Bu grafik, her bir bağımsız değişkenin model tahminlerine katkısının önem derecesini görsel olarak gösterir. Daha yüksek öneme sahip değişkenler, grafikte daha yüksek bir yerde görünür.

varImpPlot(fit_forest)

Bu kod, oluşturulan rastgele orman modelini kullanarak yeni verilerde tahminler yapar

preds= predict(fit_forest, newdata = train_test[, -c(1,12)]) %>%
  data.frame()

Bu kod, oluşturulan tahminlerin ilk altı satırını görüntüler.

head(preds)
##           .
## 1 0.1050685
## 2 0.1614667
## 3 0.8062586
## 4 0.1920834
## 5 0.6907569
## 6 0.1659998

Bu kodu çalıştırdığınızda, gerçek ve tahmin edilen değerleri içeren iki veri çerçevesi oluşturulur.

q = as.data.frame(Transported_train_test)
a = as.data.frame(ifelse(preds$. >0.5, 1, 0))

Bu kod, gerçek ve tahmin edilen değerler arasında bir çapraz tablo oluşturur.

cm = table(q$Transported, a$`ifelse(preds$. > 0.5, 1, 0)`  )
cm
##    
##       0   1
##   0 823 256
##   1 175 919

Bu kodu çalıştırdığınızda, modelin doğruluk oranını hesaplayabilirsiniz.

(828+918)/(828+251+176+918)
## [1] 0.8034975

Bu kodu çalıştırdığınızda, oluşturulan rastgele orman modeli kullanılarak test verilerinde tahminler yapılır ve tahminler bir veri çerçevesine dönüştürülür.

fit_forest = randomForest(Transported ~ ., data = train_c[, -1])

preds = predict(fit_forest, newdata = test_c) %>%
  data.frame()

Bu kodu çalıştırdığınızda, rastgele orman modelinin tahminlerini 0.5’ten büyük olanları TRUE olarak ve diğerlerini FALSE olarak sınıflandırılmış bir vektör elde edersiniz.

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

Bu kodu çalıştırdığınızda, “sub_forest.csv” adlı bir CSV dosyası oluşturulur ve bu dosyaya rastgele orman modelinin tahminleri yazılır. Bu dosya daha sonra başka bir programda açılabilir veya veri analizi için kullanılabilir.

Transported = as.character(Transported_pred_forest)
PassengerId = test_c$PassengerId
Transported = as.vector(Transported)
sample_submission = cbind(PassengerId, Transported)
sample_submission = as.data.frame(sample_submission)
sample_submission$Transported = str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_forest.csv", row.names = FALSE, quote = FALSE)

##sonuç

Her şey için teşekkürler Hocam. Size gönülden teşekkür ediyorum; varlığınız benim için büyük bir armağan.”