Hangi yolcuların alternatif bir boyuta taşınacağını tahmin edinKozmik bir gizemi çözmek için veri bilimi becerilerinize ihtiyaç duyulan 2912 yılına hoş geldiniz. Dört ışık yılı öteden bir sinyal aldık ve işler pek iyi görünmüyor.
Uzay Gemisi Titanik, bir ay önce fırlatılan yıldızlararası bir yolcu gemisiydi. Gemide neredeyse 13.000 yolcu bulunan gemi, güneş sistemimizden göçmenleri yakın yıldızların yörüngesinde bulunan üç yeni yaşanabilir dış gezegene taşımak üzere ilk yolculuğuna çıktı.
Dikkatsiz Uzay Gemisi Titanic , ilk varış noktası olan kavurucu 55 Cancri E’ye giderken Alpha Centauri’yi dönerken, bir toz bulutunun içine gizlenmiş bir uzay-zaman anormalliğiyle çarpıştı. Ne yazık ki 1000 yıl öncesindeki adaşı ile benzer bir kaderle karşılaştı. Gemi sağlam kalmasına rağmen yolcuların neredeyse yarısı alternatif bir boyuta taşındı!
Öncelikle sorunu anlamamız gerekiyor. Yıl 2912 ve yıldızlararası yolcu gemisi Uzay Gemisi Titanik, bir toz bulutunun içine gizlenmiş bir uzay-zaman anormalliğiyle çarpıştı. Ne yazık ki 1000 yıl öncesindeki adaşı ile benzer bir kaderle karşılaştı. Gemi sağlam kalmasına rağmen yolcuların neredeyse yarısı alternatif bir boyuta taşındı! Kurtarma ekiplerinin kayıp yolcuları almasına yardımcı olmak için, hangi yolcuların başka bir boyuta taşındığını tahmin etmek amacıyla uzay gemisinin hasarlı bilgisayar sisteminden elde edilen kayıtları kullanmamız gerekiyor.
##
## 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
# Matematiksel hesaplamalar için
library(Matrix)
# Veri görselleştirmesi için
library(ggplot2)
library(ggthemes)
# Modeli oluşturmak ve değerlendirmek
library(randomForest)## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
##
## Attaching package: 'randomForest'
## The following object is masked from 'package:ggplot2':
##
## margin
## The following object is masked from 'package:dplyr':
##
## combine
## Zorunlu paket yükleniyor: lattice
2 CSV dosyası kullanacağız:
tren dosyası (spaceship_titanic_train.csv) — makine öğrenimi modelini oluşturmak için kullanılacak yolcuların kişisel kayıtlarını içerir. test dosyası (spaceship_titanic_test.csv) — yolcuların kalan üçte birinin (~4300) kişisel kayıtlarını içerir, ancak hedef değişkeni (yani yolcular için Taşınan değerini) içermez. Modelimizin görünmeyen veriler üzerinde ne kadar iyi performans gösterdiğini görmek için kullanılacaktır.
## 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.
## 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.
Eğitim ve test verilerinin bir kopyasını oluşturuyoruz, böylelikle bu veri kümelerinde herhangi bir değişiklik yapsak bile orijinal veri kümelerini etkilemecektir.
# Train verilerini oku
train_df <- read.csv("C:/Users/pc/Desktop/FİNAL/train.csv")
# Test verilerini okuyun
test_df <- read.csv("C:/Users/pc/Desktop/FİNAL/test.csv")# Orijinal veri kümelerinde değişiklik yapılmasını önlemek için eğitim ve test verilerinin kopyası
train_df_1 <- train_df
test_df_1 <- test_dfDaha sonra train ve test veri setinin yapısına bakacağız. Önce mevcut özellikleri kontrol edeceğiz, ardından veri türlerine bakacağız.
## [1] "PassengerId" "HomePlanet" "CryoSleep" "Cabin" "Destination"
## [6] "Age" "VIP" "RoomService" "FoodCourt" "ShoppingMall"
## [11] "Spa" "VRDeck" "Name" "Transported"
Train veri setimizde 13 bağımsız değişken ve 1 hedef değişken (Transported) bulunmaktadır. Ayrıca test veri kümesinin sütunlarına da bakalım.
## [1] "PassengerId" "HomePlanet" "CryoSleep" "Cabin" "Destination"
## [6] "Age" "VIP" "RoomService" "FoodCourt" "ShoppingMall"
## [11] "Spa" "VRDeck" "Name"
Train verileriyle oluşturduğumuz modeli kullanarak tahmin edeceğimiz Transported dışında, test veri setinde train veri seti ile benzer özellikler mevcuttur.
## PassengerId HomePlanet CryoSleep Cabin Destination Age
## "character" "character" "character" "character" "character" "numeric"
## VIP RoomService FoodCourt ShoppingMall Spa VRDeck
## "character" "numeric" "numeric" "numeric" "numeric" "numeric"
## Name Transported
## "character" "character"
Aşağıda her değişkenin açıklaması verilmiştir. 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 askıya alınmış animasyona alınmayı seçip seçmediğini gösterir. 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. Destination — Yolcunun gemiden 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, Uzay Gemisi Titanik’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 hedef, tahmin etmeye çalıştığımız sütun.
Train veri setinde üç veri türü formatı olduğunu görebiliriz:
nesne (Kategorik değişkenler) — Eğitim veri kümesindeki kategorik değişkenler şunlardır: PassengerId, HomePlanet, CryoSleep, Cabin, Destination, VIP ve Name
float64 (Float değişkenleri, yani bazı ondalık değerleri içeren sayısal değişkenler) — Tren veri setimizdeki sayısal değişkenler: Yaş, RoomService, FoodCourt, Alışveriş Merkezi, Spa ve VRDeck
bool (Boolean değişkenleri yani iki olası değerden birine sahip bir değişken, örneğin True veya False) — Veri kümemizdeki Boolean Değişkeni Taşınır
Train ve test veri setimizin şekline bakalım.
# Train verilerinin şeklini yazdırma
cat("The shape of the train dataset is: ", dim(train_df_1), "\n")## The shape of the train dataset is: 8693 14
## The shape of the test dataset is: 4277 13
Train veri setimizde 8693 satır ve 14 sütun, test veri setimizde ise 4277 satır ve 13 sütun bulunmaktadır.
Keşif Amaçlı Veri Analizi Tek Değişkenli Analiz
Tek değişkenli analiz, değerlerinin dağılımını anlamak için her bir veriyi ayrı ayrı incelediğimiz veri analizinin en basit şeklidir.
Hedef Değişken
İlk önce Transported yani hedef değişkene bakacağız. Kategorik bir değişken olduğu için yüzde dağılımına ve çubuk grafiğine bakalım.
# Normalleştirme, sayı yerine oranları yazdırmak için doğru olarak ayarlandı
prop.table(table(train_df_1$Transported))##
## False True
## 0.4963764 0.5036236
# Hedef değişkeni görselleştirin
library(ggplot2)
ggplot(train_df_1, aes(x = Transported, fill = Transported)) +
geom_bar() +
labs(x = "Transported", y = "Transported Count") +
theme_minimal() Train
veri setindeki 8693 yolcudan 4378’i (yaklaşık %50’si) başka bir boyuta
eklendi.
Bağımsız kategorik özellikleri görselleştirelim.
par(mfrow=c(2, 2))
# HomePlanet
barplot(table(train_df_1$HomePlanet) / nrow(train_df_1), main="HomePlanet", col="lightblue")
# CryoSleep
barplot(table(train_df_1$CryoSleep) / nrow(train_df_1), main="CryoSleep", col="lightblue")
# Destination
barplot(table(train_df_1$Destination) / nrow(train_df_1), main="Destination", col="lightblue")
# VIP
barplot(table(train_df_1$VIP) / nrow(train_df_1), main="VIP", col="lightblue")Yukarıdaki çubuk grafiklerinden şu sonuç çıkarılabilir:
Train setindeki yolcuların yaklaşık %50’si Dünya’dan ayrıldı. Train veri setindeki yolcuların yaklaşık %30’u CryoSleep kullanıyordu (yani kabinlerinde kalmışlardı). Train veri setindeki yolcuların yaklaşık %69’u TRAPPIST-1e’i kullanıyor VIP hizmetler için Train veri setindeki yolcuların %1’i ödeme yapmaz.
Kabin sütunu CabinDeck’, ‘CabinNo’, ’CabinSide olarak ayıralım ve CabinDeck ve CabinSide özelliklerini çıkaralım ve görselleştirelim.
# Extract CabinDeck, CabinNo., and CabinSide feature from Cabin
split_values <- strsplit(as.character(train_df_1$Cabin), "/")
# Check and handle cases where there is no "/" or more than 2 "/"
split_values <- lapply(split_values, function(x) {
if (length(x) >= 3) {
# If more than 2 "/", take only the first 2 and the rest
c(x[1], paste(x[2:length(x)], collapse = "/"))
} else if (length(x) == 2) {
# If 2 "/", keep both
x
} else {
# If no "/", fill with NA
c(x, NA)
}
})
# Create data frame
split_df <- as.data.frame(do.call(rbind, split_values))
# Rename columns
colnames(split_df) <- c("CabinDeck", "CabinNo.", "CabinSide")[1:length(colnames(split_df))]
# Add missing columns if necessary
missing_cols <- setdiff(c("CabinDeck", "CabinNo.", "CabinSide"), colnames(split_df))
split_df[missing_cols] <- NA
# Combine with the original data frame
train_df_1 <- cbind(train_df_1, split_df)
# Check if the number of columns in train_df_1 matches the expected number
expected_cols <- c("CabinDeck", "CabinNo.", "CabinSide")
if (!all(colnames(train_df_1) %in% expected_cols)) {
cat("Number of columns in train_df_1 does not match the expected number.\n")
# Optionally, you can print the column names for further investigation
print(colnames(train_df_1))
}## Number of columns in train_df_1 does not match the expected number.
## [1] "PassengerId" "HomePlanet" "CryoSleep" "Cabin" "Destination"
## [6] "Age" "VIP" "RoomService" "FoodCourt" "ShoppingMall"
## [11] "Spa" "VRDeck" "Name" "Transported" "CabinDeck"
## [16] "CabinNo." "CabinSide"
##
## Attaching package: 'tidyr'
## The following objects are masked from 'package:Matrix':
##
## expand, pack, unpack
train_df_1 <- train_df_1 %>%
separate(Cabin, into = c("CabinDeck", "CabinNo.", "CabinSide"), sep = "/")# Çift panel için multiplot fonksiyonu
multiplot <- function(..., plotlist=NULL, cols) {
require(grid)
# Plot listesi alınır
plots <- c(list(...), plotlist)
numPlots = length(plots)
# Satır sayısı hesaplanır
numCols = cols
numRows = ceiling(numPlots/numCols)
# Çift panel oluşturulur
grid.newpage()
pushViewport(viewport(layout = grid.layout(numRows, numCols)))
# Plotlar yerleştirilir
for (i in 1:numPlots) {
matchidx <- i %% numCols
if (matchidx == 0) matchidx <- numCols
print(plots[[i]], vp = viewport(layout.pos.row = ceiling(i/numCols), layout.pos.col = matchidx))
}
}# Kütüphane yükleme
library(ggplot2)
# CabinDeck
p1 <- ggplot(train_df_1, aes(x = CabinDeck)) +
geom_bar(stat = "count", fill = "blue") +
labs(title = "CabinDeck") +
theme_minimal()
# CabinSide
train_df_1_no_na <- train_df_1[complete.cases(train_df_1$CabinSide), ]
p2_no_na <- ggplot(train_df_1_no_na, aes(x = CabinSide)) +
geom_bar(stat = "count", fill = "blue") +
labs(title = "CabinSide (NA'sız)") +
theme_minimal()
p2 <- ggplot(train_df_1, aes(x = CabinSide)) +
geom_bar(stat = "count", fill = "blue") +
labs(title = "CabinSide") +
theme_minimal()
# Çift panel oluştur
multiplot(p1, p2_no_na, cols = 2)## Zorunlu paket yükleniyor: grid
Yukarıdaki grafiklerden şunu çıkarabiliriz: Train setindeki yolcuların yaklaşık %60 gibi çoğunluğu F ve G güvertesindedir. Kabin tarafı S ile P arasındaki yolcuların yüzdesi arasında neredese hiçbir fark yoktur.
Kategorik değişken grafiklerini yorumladık. Şimdi sayısal değişkenleri tablolaştıralım.
##
## Attaching package: 'cowplot'
## The following object is masked from 'package:ggthemes':
##
## theme_map
# Yaş Histogramı
p1 <- ggplot(train_df_1, aes(x = Age)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of Age") +
theme_minimal()
# Yaş boxplot
p2 <- ggplot(train_df_1, aes(y = Age)) +
geom_boxplot(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Boxplot of Age") +
theme_minimal()
# Çift panel oluştur
plot_grid(p1, p2, labels = c(), align = "h", ncol = 2)Yaş grafiğinde dağılım oldukça normaldir.
# RoomService histogram
p1 <- ggplot(train_df_1, aes(x = RoomService)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of RoomService") +
theme_minimal()
# RoomService boxplot
p2 <- ggplot(train_df_1, aes(y = RoomService)) +
geom_boxplot(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Boxplot of RoomService") +
theme_minimal() +
ylim(-500, 1000)
# Çift panel oluştur
plot_grid(p1, p2, labels = c(), align = "h", ncol = 2)RoomService dağıtımındaki verilerin çoğunun sola doğru olduğunu, yani normal dağılım göstermediğini ve çok fazla sıfır değeri bulunduğunu görebiliyoruz. Daha sonra bunu normalleştirmeye çalışacağız.
# Spa histogram
p1 <- ggplot(train_df_1, aes(x = Spa)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of Spa") +
theme_minimal()
# Spa boxplot
p2 <- ggplot(train_df_1, aes(y = Spa)) +
geom_boxplot(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Boxplot of Spa") +
theme_minimal() +
ylim(-500, 1000)
# Çift panel oluştur
plot_grid(p1, p2, labels = c(), align = "h", ncol = 2)RoomService’e benzer bir dağılım var. Çok fazla sıfır değeri içerir ve normal dağılıma sahip değildir.
RoomService, FoodCourt, ShoppingMall, Spa, VRDeck, Spaceship Titanic’in birçok lüks olanağının her birinde yolcunun fatura ettiği tutardır; o halde VRDeck, FoodCourt ve ShoppingMall’ın benzer bir dağılıma sahip olup olmadığına bakalım.
# VRDeck histogram
p1 <- ggplot(train_df_1, aes(x = VRDeck)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of VRDeck") +
theme_minimal()
# VRDeck boxplot
p2 <- ggplot(train_df_1, aes(y = VRDeck)) +
geom_boxplot(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Boxplot of VRDeck") +
theme_minimal() +
ylim(-500, 1000)
# Çift panel oluştur
plot_grid(p1, p2, labels = c(), align = "h", ncol = 2)# FoodCourt histogram
p1 <- ggplot(train_df_1, aes(x = FoodCourt)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of FoodCourt") +
theme_minimal()
# FoodCourt boxplot
p2 <- ggplot(train_df_1, aes(y = FoodCourt)) +
geom_boxplot(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Boxplot of FoodCourt") +
theme_minimal() +
ylim(-500, 1000)
# Çift panel oluştur
plot_grid(p1, p2, labels = c(), align = "h", ncol = 2)# ShoppingMall histogram
p1 <- ggplot(train_df_1, aes(x = ShoppingMall)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histogram of ShoppingMall") +
theme_minimal()
# ShoppingMall boxplot
p2 <- ggplot(train_df_1, aes(y = ShoppingMall)) +
geom_boxplot(fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Boxplot of ShoppingMall") +
theme_minimal() +
ylim(-500, 1000)
# Çift panel oluştur
plot_grid(p1, p2, labels = c(), align = "h", ncol = 2)VRDeck, FoodCourt ve ShoppingMall’ın benzer bir dağılıma sahip olduğunu görüyoruz. Hepsi normal dağılıma sahip değil ve hepsinin en çok sıfır değeri var.
Her değişkene ayrı ayrı baktıktan sonra, hedef değişkenle ilişkilerini görmek için onları tekrar inceleyeceğiz. İlk olarak kategorik değişkenler ile hedef değişken arasındaki ilişkiyi bulacağız.
Bunu yapmak için öncelikle taşınan yolcu sayısını ve her kategorik değişken için taşınan yolcuların yüzdesini saklayacak bir veri çerçevesi oluşturacağız.
## Length Class Mode
## 8693 character character
## [1] "False" "True"
# Transported sütununu 0 ve 1'e dönüştür
train_df_1$Transported <- as.integer(train_df_1$Transported == "True")## [1] 0 1
# Veri setindeki kategorik değişkenlere göre toplam ve gözlem sayılarını hesapla
HomePlanet_Transported <- train_df_1 %>%
group_by(HomePlanet) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
)
CryoSleep_Transported <- train_df_1 %>%
group_by(CryoSleep) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
)
Destination_Transported <- train_df_1 %>%
group_by(Destination) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
)
VIP_Transported <- train_df_1 %>%
group_by(VIP) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
)Şimdi kategorik değişkenlerin taşınan değişkenlerle nasıl ilişkili olduğunu görelim.
# Visualize categorical features vs target variable
par(mfrow=c(2,2), mar=c(4,4,2,1)) # Parçalı grafik oluştur
# HomePlanet
ordered_homeplanet <- HomePlanet_Transported[order(HomePlanet_Transported$TransportedPercentage, decreasing = TRUE), "HomePlanet"]
barplot(HomePlanet_Transported$TransportedPercentage[order(HomePlanet_Transported$TransportedPercentage, decreasing = TRUE)],
names.arg = ordered_homeplanet,
main = "HomePlanet vs TransportedPercentage",
xlab = "HomePlanet",
ylab = "TransportedPercentage",
col = "skyblue")
# CryoSleep
ordered_cryosleep <- CryoSleep_Transported[order(CryoSleep_Transported$TransportedPercentage, decreasing = TRUE), "CryoSleep"]
barplot(CryoSleep_Transported$TransportedPercentage[order(CryoSleep_Transported$TransportedPercentage, decreasing = TRUE)],
names.arg = ordered_cryosleep,
main = "CryoSleep vs TransportedPercentage",
xlab = "CryoSleep",
ylab = "TransportedPercentage",
col = "orange")
# Destination
ordered_destination <- Destination_Transported[order(Destination_Transported$TransportedPercentage, decreasing = TRUE), "Destination"]
barplot(Destination_Transported$TransportedPercentage[order(Destination_Transported$TransportedPercentage, decreasing = TRUE)],
names.arg = ordered_destination,
main = "Destination vs TransportedPercentage",
xlab = "Destination",
ylab = "TransportedPercentage",
col = "green")
# VIP
ordered_vip <- VIP_Transported[order(VIP_Transported$TransportedPercentage, decreasing = TRUE), "VIP"]
barplot(VIP_Transported$TransportedPercentage[order(VIP_Transported$TransportedPercentage, decreasing = TRUE)],
names.arg = ordered_vip,
main = "VIP vs TransportedPercentage",
xlab = "VIP",
ylab = "TransportedPercentage",
col = "purple")Bu grafiklerden sırasıla şu çıkarımları yapabiliriz:
Avrupa’dan Gelen Yolcuların Yaklaşık Yüzde 64’ü Taşındı CryoSleep’teki Yolcuların yaklaşık %78’i taşındı 55 Cancri e’ye çıkan ve başka bir boyuta taşınan yolcuların oranı, PSO J318.5–22 ve TRAPPIST-1e’ye giden yolcularla karşılaştırıldığında daha fazladır. Özel VIP hizmetleri için ödeme yapan Yolcuların yaklaşık %38’i taşındı
Şimdi CabinDeck ve CabinSide sütunlarının taşımayla nasıl ilişkili olduğuna bakalım.
# 'CabinDeck' için Transported ve PassengerId'yi grupla
CabinDeck_Transported <- train_df_1 %>%
group_by(CabinDeck) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
) %>%
arrange(desc(TransportedPercentage))
# 'CabinSide' için Transported ve PassengerId'yi grupla
CabinSide_Transported <- train_df_1 %>%
group_by(CabinSide) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
) %>%
arrange(desc(TransportedPercentage))
# CabinDeck grafiği
par(mfrow = c(1, 2), figsize = c(14, 15))
barplot(
CabinDeck_Transported$TransportedPercentage,
names.arg = CabinDeck_Transported$CabinDeck[order(CabinDeck_Transported$TransportedPercentage, decreasing = TRUE)],
main = "CabinDeck",
ylab = "Transported Percentage",
col = "skyblue",
ylim = c(0, 1)
)
# CabinSide grafiği
barplot(
CabinSide_Transported$TransportedPercentage,
names.arg = CabinSide_Transported$CabinSide[order(CabinSide_Transported$TransportedPercentage, decreasing = TRUE)],
main = "CabinSide",
ylab = "Transported Percentage",
col = "lightgreen",
ylim = c(0, 1)
)CabinDeck’te bulunan B ve C, taşınan yolcuların en yüksek yüzdesine sahiptir.
CabinSide’ta bulunan S’de başka bir boyuta taşınan yolcuların oranı, CabinSidetaki P’ye kıyasla daha fazladır.
##
## FALSE
## 8693
##
## FALSE TRUE
## 8494 199
train_df_1$CabinDeck[is.na(train_df_1$CabinDeck)] <- "Unknown"
train_df_1$CabinSide[is.na(train_df_1$CabinSide)] <- "Unknown"CabinDeck_Transported <- train_df_1 %>%
group_by(CabinDeck) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
) %>%
arrange(desc(TransportedPercentage))
CabinSide_Transported <- train_df_1 %>%
group_by(CabinSide) %>%
summarise(
Transported = sum(Transported),
PassengerId = n()
) %>%
mutate(
TransportedPercentage = Transported / PassengerId
) %>%
arrange(desc(TransportedPercentage))
# Grafiği çiz
par(mfrow = c(1, 2), figsize = c(14, 15))
barplot(
CabinDeck_Transported$TransportedPercentage,
names.arg = CabinDeck_Transported$CabinDeck[order(CabinDeck_Transported$TransportedPercentage, decreasing = TRUE)],
main = "CabinDeck",
ylab = "Transported Percentage",
col = "skyblue",
ylim = c(0, 1)
)
barplot(
CabinSide_Transported$TransportedPercentage,
names.arg = CabinSide_Transported$CabinSide[order(CabinSide_Transported$TransportedPercentage, decreasing = TRUE)],
main = "CabinSide",
ylab = "Transported Percentage",
col = "lightgreen",
ylim = c(0, 1)
)# pdf formatında bir grafik çizimi
pdf("grafik.pdf", width = 14, height = 15)
# Grafik çizimi burada yapılır
# Çizimi bitir ve dosyayı kapat
dev.off()## png
## 2