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ı!
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.
Cabin - 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.
Age - 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.
Name - Yolcunun adı ve soyadı.
Transported - Yolcunun başka bir boyuta taşınıp taşınmadığı. Bu hedeftir, tahmin etmeye çalıştığınız sütundur.
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.
train <- read.csv("train.csv")
test <- read.csv("test.csv")
str(train)
## 'data.frame': 8693 obs. of 14 variables:
## $ PassengerId : chr "0001_01" "0002_01" "0003_01" "0003_02" ...
## $ HomePlanet : chr "Europa" "Earth" "Europa" "Europa" ...
## $ CryoSleep : chr "False" "False" "False" "False" ...
## $ Cabin : chr "B/0/P" "F/0/S" "A/0/S" "A/0/S" ...
## $ Destination : chr "TRAPPIST-1e" "TRAPPIST-1e" "TRAPPIST-1e" "TRAPPIST-1e" ...
## $ Age : num 39 24 58 33 16 44 26 28 35 14 ...
## $ VIP : chr "False" "False" "True" "False" ...
## $ RoomService : num 0 109 43 0 303 0 42 0 0 0 ...
## $ FoodCourt : num 0 9 3576 1283 70 ...
## $ ShoppingMall: num 0 25 0 371 151 0 3 0 17 0 ...
## $ Spa : num 0 549 6715 3329 565 ...
## $ VRDeck : num 0 44 49 193 2 0 0 NA 0 0 ...
## $ Name : chr "Maham Ofracculy" "Juanna Vines" "Altark Susent" "Solam Susent" ...
## $ Transported : chr "False" "True" "False" "False" ...
str(test)
## 'data.frame': 4277 obs. of 13 variables:
## $ PassengerId : chr "0013_01" "0018_01" "0019_01" "0021_01" ...
## $ HomePlanet : chr "Earth" "Earth" "Europa" "Europa" ...
## $ CryoSleep : chr "True" "False" "True" "False" ...
## $ Cabin : chr "G/3/S" "F/4/S" "C/0/S" "C/1/S" ...
## $ Destination : chr "TRAPPIST-1e" "TRAPPIST-1e" "55 Cancri e" "TRAPPIST-1e" ...
## $ Age : num 27 19 31 38 20 31 21 20 23 24 ...
## $ VIP : chr "False" "False" "False" "False" ...
## $ RoomService : num 0 0 0 0 10 0 0 0 0 0 ...
## $ FoodCourt : num 0 9 0 6652 0 ...
## $ ShoppingMall: num 0 0 0 0 635 263 0 0 0 0 ...
## $ Spa : num 0 2823 0 181 0 ...
## $ VRDeck : num 0 0 0 585 0 60 0 0 0 0 ...
## $ Name : chr "Nelly Carsoning" "Lerome Peckers" "Sabih Unhearfus" "Meratz Caltilter" ...
library(explore)
## Warning: package 'explore' was built under R version 4.3.2
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.3.2
library(stringr)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
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 0 0 4 NA NA NA
## 3 CryoSleep chr 0 0 3 NA NA NA
## 4 Cabin chr 0 0 6561 NA NA NA
## 5 Destination chr 0 0 4 NA NA NA
## 6 Age dbl 179 2.1 81 0 28.8 79
## 7 VIP chr 0 0 3 NA NA NA
## 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 0 0 8474 NA NA NA
## 14 Transported chr 0 0 2 NA NA NA
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 0 0 4 NA NA NA
## 3 CryoSleep chr 0 0 3 NA NA NA
## 4 Cabin chr 0 0 3266 NA NA NA
## 5 Destination chr 0 0 4 NA NA NA
## 6 Age dbl 91 2.1 80 0 28.7 79
## 7 VIP chr 0 0 3 NA NA NA
## 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 0 0 4177 NA NA NA
Cabin Ve Passengerİd sütünleri farkli bilgiler içerdiği için onlari iki ve üç sütünlere ayırıyorum
train[c('ailenum', 'ailesira')] <- str_split_fixed(train$PassengerId,'_',2)
test[c('ailenum', 'ailesira')] <- str_split_fixed(test$PassengerId,'_',2)
train[c('deck', 'num', 'side')] <- str_split_fixed(train$Cabin,'/',3)
test[c('deck', 'num', 'side')] <- str_split_fixed(test$Cabin,'/',3)
Burada Aileli olanları bulup onlara 1 olmayanlar için 0 değerlerini verdim
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)
Gereksiz Sütünleri siliyorum
train <- train %>% select(-c(ailenum,ailesira,num,Name,Cabin))
test <- test %>% select(-c(ailenum,ailesira,num,Name,Cabin))
Boş değerleri NA lar ile doldurdum
train[train == ''] <- NA
test[test == ''] <- NA
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 chr 201 2.3 4 NA NA NA
## 3 CryoSleep chr 217 2.5 3 NA NA NA
## 4 Destination chr 182 2.1 4 NA NA NA
## 5 Age dbl 179 2.1 81 0 28.8 79
## 6 VIP chr 203 2.3 3 NA NA NA
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Transported chr 0 0 2 NA NA NA
## 13 deck chr 199 2.3 9 NA NA NA
## 14 side chr 199 2.3 3 NA NA NA
## 15 aile dbl 0 0 2 0 0.45 1
test %>% 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 4277 NA NA NA
## 2 HomePlanet chr 87 2 4 NA NA NA
## 3 CryoSleep chr 93 2.2 3 NA NA NA
## 4 Destination chr 92 2.2 4 NA NA NA
## 5 Age dbl 91 2.1 80 0 28.7 79
## 6 VIP chr 93 2.2 3 NA NA NA
## 7 RoomService dbl 82 1.9 843 0 219. 11567
## 8 FoodCourt dbl 106 2.5 903 0 439. 25273
## 9 ShoppingMall dbl 98 2.3 716 0 177. 8292
## 10 Spa dbl 101 2.4 834 0 303. 19844
## 11 VRDeck dbl 80 1.9 797 0 311. 22272
## 12 deck chr 100 2.3 9 NA NA NA
## 13 side chr 100 2.3 3 NA NA NA
## 14 aile dbl 0 0 2 0 0.45 1
unique(train$HomePlanet)
## [1] "Europa" "Earth" "Mars" NA
unique(train$CryoSleep)
## [1] "False" "True" NA
unique(train$VIP)
## [1] "False" "True" NA
Tahmını bozmamak için bir kaç değişkendeki NA değerlerini String yanı metin “NA” olarak değiştirdim
train$HomePlanet <- addNA(train$HomePlanet)
test$HomePlanet <- addNA(test$HomePlanet)
train$VIP <- addNA(train$VIP)
test$VIP <- addNA(test$VIP)
train$CryoSleep <- addNA(train$CryoSleep)
test$CryoSleep <- addNA(test$CryoSleep)
train$Destination <- addNA(train$Destination)
test$Destination <- addNA(test$Destination)
train$side <- addNA(train$side)
test$side <- addNA(test$side)
train$deck <- addNA(train$deck)
test$deck <- addNA(test$deck)
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 179 2.1 81 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Transported chr 0 0 2 NA NA NA
## 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
hist(train$Age)
Yolcuların yaşlarının dağılımına baktım yolcuların çoğu 24-25 arasında
olduğu için boşlukları 25 ile dolduruyorum
train <- train %>% mutate(Age = coalesce(Age,25))
test <- test %>% mutate(Age= coalesce(Age,0))
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 80 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 7 RoomService dbl 181 2.1 1274 0 225. 14327
## 8 FoodCourt dbl 183 2.1 1508 0 458. 29813
## 9 ShoppingMall dbl 208 2.4 1116 0 174. 23492
## 10 Spa dbl 183 2.1 1328 0 311. 22408
## 11 VRDeck dbl 188 2.2 1307 0 305. 24133
## 12 Transported chr 0 0 2 NA NA NA
## 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
hist(train$RoomService)
hist(train$Spa)
hist(train$ShoppingMall)
hist(train$FoodCourt)
hist(train$VRDeck)
Dağılımlara bakarak yolcuların yarısından fazlasının 0$ harcadığını
öğrendim ve boşlukları 0 ler ile doldurdum
train <- train %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0),
VRDeck = coalesce(VRDeck, 0),
Spa = coalesce(Spa, 0),
FoodCourt = coalesce(FoodCourt, 0),
RoomService = coalesce(RoomService, 0))
test <- test %>% mutate(ShoppingMall = coalesce(ShoppingMall, 0),
VRDeck = coalesce(VRDeck, 0),
Spa = coalesce(Spa, 0),
FoodCourt = coalesce(FoodCourt, 0),
RoomService = coalesce(RoomService, 0))
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 80 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 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 chr 0 0 2 NA NA NA
## 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
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 80 0 28.8 79
## 6 VIP fct 0 0 3 NA NA NA
## 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 chr 0 0 2 NA NA NA
## 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
test %>% 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 4277 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 79 0 28.0 79
## 6 VIP fct 0 0 3 NA NA NA
## 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 deck fct 0 0 9 NA NA NA
## 13 side fct 0 0 3 NA NA NA
## 14 aile dbl 0 0 2 0 0.45 1
Veriler Tahmina hazir
** Logistik regresyon, istatistik ve makine öğrenimi alanlarında kullanılan bir sınıflandırma algoritmasıdır. Temel olarak, bir bağımlı değişkenin (genellikle iki sınıfın olduğu bir durumda) diğer bağımsız değişkenlerle ilişkisini modellemek için kullanılır. Bu ilişkiyi belirlemek için lojistik fonksiyonu kullanılır. **
library(caTools)
## Warning: package 'caTools' was built under R version 4.3.2
train$Transported <- as.logical(train$Transported)
Passengerid hariç bütün değişkenleri farklı değişkene kayıt edıyorum
train_set <- train[2:15]
test_set <- test[2:14]
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)
Bu R dilindeki kod, bir lojistik regresyon modelini oluşturmayı amaçlar.
logistic = glm(formula = Transported ~ ., family = binomial,data = training_set)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Bu R dilindeki kod, oluşturulan lojistik regresyon modeli (logistic modeli) kullanılarak test seti üzerindeki gözlemler için olasılık tahminleri elde etmeyi amaçlar
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
Bu R kodu, bir sınıflandırma modelinin tahminlerini belirli bir eşik değeri kullanarak ikili bir sınıfa dönüştürmeyi amaçlar. Eğer bir modelin çıktısı (olasılık tahminleri) belirli bir eşik değerden büyükse, tahmin 1 (genellikle pozitif sınıf); aksi takdirde, tahmin 0 (genellikle negatif sınıf) olacaktır.
y_pred = ifelse(prob_pred > 0.5, 1,0)
Bu R dilindeki kod, belirli bir eşik değeri üzerinden elde edilen olasılık tahminlerini temel alarak sınıflandırma yapmayı amaçlar.
y_true= ifelse(testing_set[11] == TRUE, 1,0)
Bu R dilindeki kod, bir karışıklık matrisi (confusion matrix) oluşturmayı amaçlar. Karışıklık matrisi, bir sınıflandırma modelinin performansını değerlendirmek için kullanılır ve gerçek ve tahmin edilen sınıfların sayılarını gösterir.
cm = table(y_true, y_pred)
cm
## y_pred
## y_true 0 1
## 0 820 259
## 1 190 904
(820+904)/(820+904+259+190)
## [1] 0.7933732
Bu R kodu, bir lojistik regresyon modeli oluşturmayı ve bu modeli kullanarak sınıflandırma tahminleri yapmayı amaçlamaktadır. İki bloktan oluşan bu kodlarda, birinci blokta lojistik regresyon modeli kurulurken, ikinci blokta bu model kullanılarak sınıflandırma tahminleri yapılır.
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)
Transported <- as.character(y_pred)
Transported <- as.vector(Transported)
PassengerId <- test$PassengerId
Bu R kodu, iki vektörü yan yana (sütunlarını birleştirerek) içeren bir matris ya da veri çerçevesi oluşturmayı amaçlar. Bu tür bir birleştirme işlemi, genellikle model tahminlerini ve tahminlere karşılık gelen gözlem kimliklerini birleştirmek ve bir sunum ya da başka bir amaç için kullanmak için yapılır.
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_logistic.csv" , row.names = FALSE, quote = FALSE)
Naive Bayes, istatistiksel bir sınıflandırma (classification) algoritmasıdır ve özellikle metin madenciliği ve makine öğrenmesi uygulamalarında sıkça kullanılır. Bu algoritma, Bayes teoremi temel alınarak çalışır ve “naive” (saf) olarak adlandırılır, çünkü bir örneğin sınıfını belirlerken özellikler arasındaki bağımsızlık varsayımını yapar.
Naive Bayes, öğrenme ve tahmin aşamalarından oluşur. Öğrenme aşamasında, algoritma eğitim verilerini analiz eder ve sınıflandırma için kullanılacak özellikler arasındaki olasılıkları belirler. Tahmin aşamasında ise, yeni bir örnek verildiğinde, bu özelliklere dayalı olarak en olası sınıfı tahmin eder.
Bu R kodu, e1071 paketini kullanarak Naive Bayes sınıflandırma modeli kurmayı ve bu modeli kullanarak test veri setindeki gözlemleri sınıflandırmayı amaçlamaktadır.
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()
Bu R kodu, Naive Bayes modeli tarafından yapılan sınıflandırma skorlarına dayalı olarak bir ikili sınıflandırma eşiği belirleyerek, sınıflandırma tahminlerini elde etmeyi amaçlar.
y_pred = ifelse(preds$TRUE. > 0.5, 1, 0)
cm = table(y_true, y_pred)
cm
## y_pred
## y_true 0 1
## 0 510 569
## 1 78 1016
(510+1016)/(510+1016+569+78)
## [1] 0.7022549
nb_son = naiveBayes(Transported ~ ., data = train_set)
perd <- predict(nb_son, newdata = test_set, type = "raw") %>% data.frame()
y_pred = ifelse(preds$TRUE. > 0.5, TRUE, FALSE)
Transported <- as.character(y_pred)
Transported <- as.vector(Transported)
PassengerId <- test$PassengerId
submission <- cbind(PassengerId, Transported)
## Warning in cbind(PassengerId, Transported): number of rows of result is not a
## multiple of vector length (arg 2)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "sub_nb.csv" , row.names = FALSE, quote = FALSE)
Çok Sınıflı Sınıflandırma: SVM, doğrudan çok sınıflı sınıflandırma problemleriyle başa çıkmak için tasarlanmamıştır. Ancak, bu sorun, birkaç ikili sınıflandırma problemiyle çözülebilir.
Bu R dilindeki kod, e1071 paketinde bulunan svm (Support Vector Machines) fonksiyonunu kullanarak bir Destek Vektör Makineleri (Support Vector Machines, SVM) sınıflandırma modeli oluşturmayı amaçlar. İşte bu kodun açıklamaları:
Bu R kodu, e1071 paketi kullanılarak bir destek vektör makinesi (SVM) sınıflandırma modeli kurmayı ve bu modeli kullanarak test veri setindeki gözlemleri sınıflandırmayı amaçlamaktadır.
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()
y_pred = ifelse(preds$. == TRUE, 1, 0)
cm = table(y_true, y_pred)
cm
## y_pred
## y_true 0 1
## 0 831 248
## 1 173 921
(831+921)/(831+921+248+173)
## [1] 0.8062586
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$.
Transported <- as.character(y_pred)
Transported <- as.vector(Transported)
PassengerId <- test$PassengerId
submission <- cbind(PassengerId, Transported)
submission <- as.data.frame(submission)
submission$Transported <- str_to_title(submission$Transported)
write.csv(submission, "submission_svm.csv", row.names = FALSE, quote = FALSE)
%20!%5B%5D(photo3.png))