Spaceship Titanic

Description (Tanım)

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ı!

Dataset Description (Veri Kümesi Açıklaması)

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

Dosya ve Veri Alanı Açıklamaları

train.csv - Personal records for about two-thirds (~8700) of the passengers, to be used as training data.

PassengerId - A unique Id for each passenger. Each Id takes the form gggg_pp where gggg indicates a group the passenger is travelling with and pp is their number within the group. People in a group are often family members, but not always.

HomePlanet - The planet the passenger departed from, typically their planet of permanent residence.

CryoSleep - Indicates whether the passenger elected to be put into suspended animation for the duration of the voyage. Passengers in cryosleep are confined to their cabins.

Cabin - The cabin number where the passenger is staying. Takes the form deck/num/side, where side can be either P for Port or S for Starboard.

Destination - The planet the passenger will be debarking to. Age - The age of the passenger.

VIP - Whether the passenger has paid for special VIP service during the voyage.

RoomService, FoodCourt, ShoppingMall, Spa, VRDeck - Amount the passenger has billed at each of the Spaceship Titanic’s many luxury amenities.

Name - The first and last names of the passenger.

Transported - Whether the passenger was transported to another dimension. This is the target, the column you are trying to predict.

test.csv - Personal records for the remaining one-third (~4300) of the passengers, to be used as test data. Your task is to predict the value of Transported for the passengers in this set.

sample_submission.csv - A submission file in the correct format.

PassengerId - Id for each passenger in the test set.

Transported - The target. For each passenger, predict either True or False.

library(readr)
## Warning: package 'readr' was built under R version 4.3.2
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.
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.
library(readr)
sample_submission <- read_csv("sample_submission.csv")
## Rows: 4277 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): PassengerId
## lgl (1): 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.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Warning: package 'tibble' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.2
## Warning: package 'purrr' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'forcats' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ purrr     1.0.2
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(explore)
## Warning: package 'explore' was built under R version 4.3.2
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>
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

YORUM (PassengerId) iki ayırıcağız (ailenum ve ailesira) old trainden önecesi ve sonrası

train[c('ailenum', 'ailesira')] <- str_split_fixed(train$PassengerId,'_',2)
test[c('ailenum', 'ailesira')] <- str_split_fixed(test$PassengerId,'_',2)

YOURM Cabine bakmak olurasak onuda üçe ayırıcağız

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

YORUM NA tobolunun içinde boşluk varsa NA kulanımamız gerekir NA koymasak bazı hataları verebilir

train[train == ''] <- NA
test[test == ''] <- NA

YORUM Cabineye ıhıyacaımız kalmadığı için çıkartıyorum

train <- train %>% select(-Cabin)
test <- test %>% select(-Cabin)
train <- train %>% select(-Name)
test <- test %>% select(-Name)
train <- train %>% select(-num)
test <- test %>% select(-num)

Yorum addNA ekledığımız için hespısne gösterıyor

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

YORUM NA yın trınak içinde olduğunda daha iyi yolu seçmiş olurus

levels(train$VRDeck)[is.na(levels(train$VRDeck))]<-"NA"
levels(test$VRDeck)[is.na(levels(test$VRDeck))]<-"NA"
levels(train$HomePlanet)[is.na(levels(train$HomePlanet))]<-"NA"
levels(test$HomePlanet)[is.na(levels(test$HomePlanet))]<-"NA"
levels(train$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   "NA"
levels(test$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   "NA"
train$CryoSleep <- addNA(train$CryoSleep)
test$CryoSleep <- addNA(test$CryoSleep)
unique(train$Destination)
## [1] "TRAPPIST-1e"   "PSO J318.5-22" "55 Cancri e"   NA
unique(train$HomePlanet)
## [1] Europa Earth  Mars   NA    
## Levels: Earth Europa Mars NA
levels(test$HomePlanet)
## [1] "Earth"  "Europa" "Mars"   "NA"
train$CryoSleep <- addNA(train$CryoSleep)
test$CryoSleep <- addNA(test$CryoSleep)
unique(train$Destination)
## [1] "TRAPPIST-1e"   "PSO J318.5-22" "55 Cancri e"   NA
train$Destination <- addNA(train$Destination)
test$Destination <- addNA(test$Destination)

YORUM GROUP_BY daha yüksek not çıkartmak için hem Destination göre gruplayalım hemde Destinatione göre grouplayalım sonra dört yaş grubuna ayıracaz

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

YORUM Hıstogramdan ortalama almamız kerek yok

hist(train$FoodCourt)

hist(train$FoodCourt)

hist(train$Age)

Şimdi ortalam bakrsak AGE göre

hist(train$FoodCourt)

YORUM ortalama bakmak olusak 0 aldımığız daha iyi oluyor

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

YORUM artık her şey kulanabiliyoruz (deck ve vıp ve side)

train$deck <- addNA(train$deck)
test$deck <- addNA(test$deck)
train$VIP <- addNA(train$VIP)
test$VIP <- addNA(test$VIP)
train$side <- addNA(train$side)
test$side <- addNA(test$side)
train <- train %>% group_by(HomePlanet) %>% mutate(across(Age, ~replace_na(.,mean(., na.rm = TRUE))))
test <- test %>% group_by(HomePlanet) %>% mutate(across(Age, ~replace_na(.,mean(., na.rm = TRUE))))
train <- train %>% group_by(HomePlanet) %>% mutate(across(RoomService, ~replace_na(.,mean(., na.rm = TRUE))))
test <- test %>% group_by(HomePlanet) %>% mutate(across(RoomService, ~replace_na(.,mean(., na.rm = TRUE))))
train <- train %>% group_by(HomePlanet) %>% mutate(across(FoodCourt, ~replace_na(.,mean(., na.rm = TRUE))))
test <- test %>% group_by(HomePlanet) %>% mutate(across(FoodCourt, ~replace_na(.,mean(., na.rm = TRUE))))
train <- train %>% group_by(HomePlanet) %>% mutate(across(ShoppingMall, ~replace_na(.,mean(., na.rm = TRUE))))
test <- test %>% group_by(HomePlanet) %>% mutate(across(ShoppingMall, ~replace_na(.,mean(., na.rm = TRUE))))
train <- train %>% group_by(HomePlanet) %>% mutate(across(Spa, ~replace_na(.,mean(., na.rm = TRUE))))
test <- test %>% group_by(HomePlanet) %>% mutate(across(Spa, ~replace_na(.,mean(., na.rm = TRUE))))

YORUM şimdi burdan aile numarsını kulanıp aile yaratabiliriz

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

YORUM (AİLENUM VE AİLESİRA)ıhtıyacımız kalmadığı için kaldırıyorum

train <- train %>% select(-ailenum,-ailesira)
test <- test %>% select(-ailenum,-ailesira)
train %>% describe_all()
## # A tibble: 15 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 PassengerId  chr       0      0   8693    NA  NA       NA
##  2 HomePlanet   fct       0      0      4    NA  NA       NA
##  3 CryoSleep    fct       0      0      3    NA  NA       NA
##  4 Destination  fct       0      0      4    NA  NA       NA
##  5 Age          dbl       0      0     84     0  28.8     79
##  6 VIP          fct       0      0      3    NA  NA       NA
##  7 RoomService  dbl       0      0   1277     0 225.   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 deck         fct       0      0      9    NA  NA       NA
## 14 side         fct       0      0      3    NA  NA       NA
## 15 aile         dbl       0      0      2     0   0.45     1

logostic

Lojistik regresyon, ikili sonuçları tahmin etmek için basit ama güçlü bir modeldir. Yani bir şeyin olup olmayacağı. Denetimli makine öğrenimine yönelik bir tür sınıflandırma modelidir.

Lojistik regresyon neredeyse her sektörde (pazarlama, sağlık hizmetleri, sosyal bilimler ve diğerleri) kullanılır ve her veri bilimcinin araç setinin önemli bir parçasıdır.

Bu eğitimden en iyi şekilde yararlanmak için R hakkında temel çalışma bilgisine sahip olmanız gerekir. Bu aynı zamanda ilgili model türü olan doğrusal regresyon hakkında bilgi sahibi olmanıza da yardımcı olur. Bunu öğrenmek için R Eğitimindeki Doğrusal Regresyon bölümünü okuyun.

YORUM train_set trainden farkıl olacak 15 fark var

train_set<-train[2:15]

test_set testinde farklı olacak 14 fark var

test_set<-test[2:14]

Yorum burdan ıkı gruba ayırıcağız %75 ve % 25 , biz burda %75 aldık daha ıyı sonuç gösterıyor train_set ile ve test_setin oluşturduk

library(caTools)
## Warning: package 'caTools' was built under R version 4.3.2
set.seed(123)
split=sample.split(train_set$Transported , SplitRatio = 0.75)
training_set=subset(train_set, split==TRUE)
testing_set=subset(train_set,split==FALSE)

YORUM logistikte 0 ve 1 oluştrduk

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

YORUM prob_pred e her hangi bir isimi koyabiliyoruz prob fonction isimi pred tahmın

YORUM Logistik respont olarak yeni data kuruyoruz yeni data ne test_setinde normal setisinde fark Transport içinde olması -11.kodu kulanma ve bu data üzerinde tredi yap

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

YORUM olaslık tahmını

y_pred = ifelse(prob_pred> 0.5,1,0)
y_pred = ifelse(prob_pred > 0.5, 1,0)
y_true <- ifelse(testing_set[11] == TRUE, 1, 0)

YORUM table greçeklerle ve tahımınleri karşılaştıracağız yüde kaç olaslığı bulmak için kulanıyoruz

cm = table(y_true,y_pred)
cm
##       y_pred
## y_true   0   1
##      0 819 260
##      1 189 905
(825+909)/(825+909+254+185)
## [1] 0.7979751

YORUM logistic bu sefer bütün seti için yapacağız bütün dataye kulanıp test setinde kulanırız

logistic_son =glm(formula = Transported ~ ., family = binomial, data = train_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
prob_pred = predict(logistic_son, type = 'response', newdata = test_set)
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
y_pred = ifelse(prob_pred > 0.5, TRUE, FALSE)

YORUM PassengerID yaz ve tahmınlerı yaz

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

YORUM submission (passengerId ve Transported) i birleeeştrıyoruz

submission <- cbind(PassengerId, Transported)

YORUM burdan data fre yapıyoruz

submission <- as.data.frame(submission)

YORUM Transportın başlık olmasın ıstıyoruz submission Transported adı str_to_title .Adını koydumuzda her şey tamamlanmış olur

submission$Transported <- str_to_title(submission$Transported)

YORUM yeni bir dosseiye krouyoruz

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

sonuç

NAİVE

Veri biliminde pek çok algoritma kullanılır. Bunlardan biride Supervised Learning (Gözetimli öğrenme) başlığı altında incelediğimiz bir Classification (Sınıflandırma) olan Naive Bayes’tir. Naive Bayes üretken(generative) bir modeldir. Bir sonraki yazımızda üretken ve ayrımcı sınıflandırma(generative and discriminative classifier) farkından bahsedeceğiz.

Sınıflandırma, veri setimizdeki ayırt etmemize yarayan belirli özelliklerine(features (X)) bakarak hedefimizi(target (y)) katagorilere ayırmamızı sağlar.

YORUM naiveBayes respont olarak yeni data kuruyoruz yeni data ne test_setinde normal setisinde fark Transport içinde olması -11.kodu kulanma ve bu data üzerinde tredi yap.Transport kulan sonra hepsine kulan data predict

library(e1071)
## Warning: package 'e1071' was built under R version 4.3.2
fit_nb <- naiveBayes(Transported ~ ., data = training_set)
preds <- predict(fit_nb, newdata =testing_set[-11], type = "raw") %>%
  data.frame()

YORUM olaslık tahmını

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

YORUM table greçeklerle ve tahımınleri karşılaştıracağız yüde kaç olaslığı bulmak için kulanıyoruz

cm = table(y_true, y_pred)
cm
##       y_pred
## y_true    0    1
##      0  510  569
##      1   78 1016
(510+1016)/ (510+1016+78+569)
## [1] 0.7022549

YORUM n_b bu sefer bütün seti için yapacağız bütün dataye kulanıp test setinde kulanırız

nb_son = naiveBayes(Transported ~ ., data = train_set)
preds <- predict(nb_son, newdata = test_set, type = "raw") %>%
  data.frame()
y_pred = ifelse(preds$TRUE.> 0.5 ,TRUE,FALSE)

YORUM PassengerID yaz ve tahmınlerı yazYORUM PassengerID yaz ve tahmınlerı yaz

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

YORUM submission (passengerId ve Transported) i birleeeştrıyoruz

submission <- cbind(PassengerId, Transported)

YORUM burdan data fre yapıyoruz

submission <- as.data.frame(submission)

YORUM Transportın başlık olmasın ıstıyoruz submission Transported adı str_to_title .Adını koydumuzda her şey tamamlanmış olur

submission$Transported <- str_to_title(submission$Transported)

YORUM yeni bir dosseiye krouyoruz

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

sonuç

SVM

SVM verileri yüksek boyutlu bir özellik alanına eşleyerek çalışır, böylece veri başka bir şekilde ayrılabilir olmasa da veri noktaları kategorilendirilebilir. Kategoriler arasında bir ayırıcı bulunur, daha sonra veriler, ayırıcının bir hiperdüzlem olarak çizilebileceği gibi dönüştürülür. Bunun ardından, yeni verilerin özellikleri, yeni bir kaydın ait olması gereken grubu tahmin etmek için kullanılabilir.

Örneğin, veri noktalarının iki farklı kategoriye denk düştüğünde aşağıdaki şekli göz önünde bulundurun.

Şekil 1. Özgün veri kümesi

ki kategori, aşağıdaki şekilde gösterildiği gibi bir eğri ile ayrılabilir.

Şekil 2. Ayırıcıya sahip veriler eklendi

dönüşümden sonra, iki kategori arasındaki sınır, aşağıdaki şekilde gösterildiği gibi bir hiperdüzlem tarafından tanımlanabilir.

Şekil 3. Dönüştürülen veriler

Dönüştürme için kullanılan matematiksel işlev, kernel işlevi olarak bilinir. IBM® SPSS® Modeler içindeki SVM, aşağıdaki çekirdek tiplerini destekler:

Doğrusal Çok terimli Radyal temel işlev (RBF) Sigmoid Doğrusal bir çekirdek işlevi, verilerin doğrusal olarak ayrılması önerilirse önerilir. Diğer durumlarda, diğer işlevlerden biri kullanılmalı. her biri farklı algoritmalar ve parametreler kullandığı için her durumda en iyi modeli elde etmek için farklı işlevlerle denemeler yapmak gerekecek.

library(e1071)
fit_svm <- svm(Transported ~ ., data = training_set,type = 'C-classification' , kernel= 'linear')

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

YORUM olaslık tahmını

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

YORUM table greçeklerle ve tahımınleri karşılaştıracağız yüde kaç olaslığı bulmak için kulanıyoruz

cm = table(y_true, y_pred)
cm
##       y_pred
## y_true   0   1
##      0 831 248
##      1 171 923


```r
(831+923) / (831+923+171+248)
## [1] 0.807179

YORUM svm_son bu sefer bütün seti için yapacağız bütün dataye kulanıp test setinde kulanırız

svm_son = svm(Transported ~ ., data = train_set, type = 'C-classification' , kernel = 'linear')
preds <- predict(svm_son, newdata = test_set,type = "raw") %>%
  data.frame()
y_pred =preds$.

YORUM PassengerID yaz ve tahmınlerı yaz

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

YORUM submission (passengerId ve Transported) i birleeeştrıyoruz

submission <- cbind(PassengerId, Transported)

YORUM burdan data fre yapıyoruz

submission <- as.data.frame(submission)

YORUM Transportın başlık olmasın ıstıyoruz submission Transported adı str_to_title .Adını koydumuzda her şey tamamlanmış olur

submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "sub_svm.csv", row.names = FALSE, quote = FALSE)

sonuç