LoginSignup
0
4

私は最近Kaggleを始めた初心者です。
KaggleにはRでも参加できるということで、RでKaggleに参加しました。

ノートブックの作成

有名なチュートリアルコンペであるTitanic(タイタニック)に参加しました。
https://www.kaggle.com/competitions/titanic
スクリーンショット 2023-11-24 1.43.21.png
CodeタブからNew Notebookボタンをクリックし、新しいノートブックを作成しました。
ノートブックを開いたら、FileタブからLanguage、Rをクリックします。
これにより、プログラミング言語をRに設定することができます。

コード

コードを記載していきます。

ライブラリの読み込み

ggplot2dplyrを読み込みます。

library(ggplot2)
library(dplyr)

データの読み込み

read.csv()を用いて学習データ、テストデータ、提出データを読み込みます。

train = read.csv("/kaggle/input/titanic/train.csv", header = TRUE)
test = read.csv("/kaggle/input/titanic/test.csv", header = TRUE)
gender_submission = read.csv("/kaggle/input/titanic/gender_submission.csv", header = TRUE)

データの可視化

ggplot2を用いてデータを可視化します。

Survivedの可視化

Survivedのカウントを可視化します。

ggplot(train, aes(x = factor(Survived), fill = factor(Survived))) + geom_bar()

Unknown-1.png

SurvivedとPclassの可視化

Pclassごとの生存率を可視化します。

survival_rate = aggregate(Survived ~ Pclass, train[c("Pclass", "Survived")], mean)
survival_rate$Pclass = factor(survival_rate$Pclass, levels = c("1", "2", "3"))
ggplot(survival_rate, aes(x = Pclass, y = Survived, fill = Pclass)) + geom_col()

Unknown-7.png

PclassごとのSurvivedのカウントを可視化します。

ggplot(train, aes(x = Pclass, fill = factor(Survived))) + geom_bar(position = "dodge")

Unknown-8.png

SurvivedとSexの可視化

Sexごとの生存率を可視化します。

survival_rate = aggregate(Survived ~ Sex, train[c("Sex", "Survived")], mean)
survival_rate$Sex = factor(survival_rate$Sex, levels = c("male", "female"))
ggplot(survival_rate, aes(x = Sex, y = Survived, fill = Sex)) + geom_col()

Unknown-6.png

SexごとのSurvivedのカウントを可視化します。

ggplot(train, aes(x = Sex, fill = factor(Survived))) + geom_bar(position = "dodge")

Unknown-1.png

SurvivedとAgeの可視化

Survivedごとのヒストグラムを作成します。

ggplot(train, aes(x = Age, fill = factor(Survived))) + geom_histogram(position = "identity", alpha = 0.5)

Unknown-1.png

SurvivedとFareの可視化

Survivedごとのヒストグラムを作成します。

ggplot(train, aes(x = Fare, fill = factor(Survived))) + geom_histogram(position = "identity", alpha = 0.5)

Unknown-4.png

データ前処理

trainとtestの連結

data = bind_rows(train, test)

欠損値の確認

colSums(is.na(data))
PassengerId: 0 Survived: 418 Pclass: 0 Name: 0 Sex: 0 Age: 263 SibSp: 0 Parch: 0 Ticket: 0 Fare: 1 Cabin: 0 Embarked: 0

Sex

data$Sex = as.numeric(factor(data$Sex, levels = c('male', 'female')))

Age

data$Age[is.na(data$Age)] = median(data$Age, na.rm = TRUE)

Embarked

data = data %>%
  mutate(Embarked = ifelse(is.na(Embarked), 'S', Embarked))

data$Embarked = as.numeric(factor(data$Embarked, levels = c('S', 'C', 'Q')))

Fare

data$Fare[is.na(data$Fare)] = mean(data$Fare, na.rm = TRUE)

Name、PassengerId、Ticket、Cabinの削除

delete_columns = c('Name', 'PassengerId', 'Ticket', 'Cabin')
data = data %>% select(-one_of(delete_columns))

学習データとテストデータの抽出

train = data[1:nrow(train), ]
test = data[(nrow(train) + 1):nrow(data), ]
X_train = train %>% select(-Survived)
y_train = train$Survived
X_test = test %>% select(-Survived)

学習

model = glm(y_train ~ ., data = data.frame(cbind(y_train, X_train)))
y_pred = predict(model, newdata = data.frame(X_test), type = "response")
y_pred = as.numeric(y_pred >= 0.5)

データの出力

gender_submission$Survived = as.integer(y_pred)
write.csv(gender_submission, file = "submission.csv", row.names = FALSE)

Public Scoreは0.76794でした。
RでもKaggleに参加できることがわかりました。
Rでコンペに参加することにより、Rのスキルを高めていきたいです。

参考文献

https://www.kaggle.com/learn-guide/r
https://www.kaggle.com/code/sishihara/upura-kaggle-tutorial-01-first-submission
https://ct-innovation01.xyz/DL-Freetime/kaggle-003/

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4