私は最近Kaggleを始めた初心者です。
KaggleにはRでも参加できるということで、RでKaggleに参加しました。
ノートブックの作成
有名なチュートリアルコンペであるTitanic(タイタニック)に参加しました。
https://www.kaggle.com/competitions/titanic
CodeタブからNew Notebookボタンをクリックし、新しいノートブックを作成しました。
ノートブックを開いたら、FileタブからLanguage、Rをクリックします。
これにより、プログラミング言語をRに設定することができます。
コード
コードを記載していきます。
ライブラリの読み込み
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()
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()
PclassごとのSurvivedのカウントを可視化します。
ggplot(train, aes(x = Pclass, fill = factor(Survived))) + geom_bar(position = "dodge")
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()
SexごとのSurvivedのカウントを可視化します。
ggplot(train, aes(x = Sex, fill = factor(Survived))) + geom_bar(position = "dodge")
SurvivedとAgeの可視化
Survivedごとのヒストグラムを作成します。
ggplot(train, aes(x = Age, fill = factor(Survived))) + geom_histogram(position = "identity", alpha = 0.5)
SurvivedとFareの可視化
Survivedごとのヒストグラムを作成します。
ggplot(train, aes(x = Fare, fill = factor(Survived))) + geom_histogram(position = "identity", alpha = 0.5)
データ前処理
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/