為了在R上面執行Adaboost的方法,我們首先要在R studio上先下載”adabag-package”,並載入

1.jpg

 

這裡我們會用到Kaggle上面最經典的幾個資料之一,鐵達尼號乘船資料(Titanic),這個資料主要包含以下整理的內容:

2.jpg

 

讀取資料與檢視資料

3.jpg

 

我們可以透過View(),看一下資料的內容,總共有12個變數,891個樣本

4.jpg

 

我們也可以透過str(),得到每一個變數的型態、內容等細節

5.jpg

 

在進行分析前,我們需要針對資料做一些重要的預處理,首先要將資料中的類別變項在R studio中轉換成因子變項(factor),這樣之後在分析的時候,R才不會誤當成連續變項分析

6.jpg

 

為了要確認資料中的變項真的有轉換成Factor,我們可以使用is.factor()做確認,如果正確轉換的話,就會顯示TRUE

7.jpg

 

可以透過summary(),去檢視變項的遺漏情形(NA’s)、值的範圍、值的型態

8.jpg

 

從執行結果可以發現Age,Embarked有遺漏情形,因此我們需要做一些資料遺漏的填補,這樣後面分析的時候樣本才不會被當成無效值剃除不分析,我們針對Age進行中位數(28)填補

9.jpg

 

針對類別變項的Embarked則用眾數填補

10.jpg

 

經過資料填補後,我們就可以開始來進行Adaboost的分析,在分析之前有一些重要觀念要了解,首先Adabag package預設的弱演算法為決策樹,可調整的參數如下

11.jpg

 

產生模型後,我們要針對模型做預測力的評估,我們這邊使用predict()得到預測的結果,再透過此預測結果去計算模型的accuracy

12.jpg

 

 

參考資料

 

語法:

install.packages("adabag")
library(adabag)

library(readr)
train <- read_csv("F:/titanic/train.csv")
View(train)
str(train)

#將資料變項轉換成Factor
train$Survived <- as.factor(train$Survived)
train$Pclass <- as.factor(train$Pclass)
train$Sex <- as.factor(train$Sex)
train$Embarked <- as.factor(train$Embarked)

#檢查是否正確轉換成Factor
is.factor(train$Survived)
is.factor(train$Pclass)
is.factor(train$Sex)
is.factor(train$Embarked)

#檢查資料的遺漏情形
summary(train)

# 將 Age 遺漏值以 median 填補
age_median <- median(train$Age, na.rm = TRUE)
new_Age <- ifelse(is.na(train$Age), age_median, train$Age)
train$Age <- new_Age

# 可以使用Hmisc套件的impute()來填補
library(Hmisc)
#先得到Embarked的眾數為S
summary(train$Embarked)
#使用眾數填補遺漏
train$Embarked <- impute(train$Embarked, mode)
#再次確認有正確填補
summary(train$Embarked)


#建立模型
attach(train) #可以直接使用資料的變項,不需要宣告資料來源
Adaboost_fit <- boosting(Survived ~ Pclass + Age + Sex + Embarked , data = train, mfinal = 100)

#產生預測train data下的結果
train_titanic_predicted <- predict(Adaboost_fit, train)

#模型的accuracy=1-error rate
accuracy_rate <- 1 - train_titanic_predicted$error
accuracy_rate
 

arrow
arrow
    全站熱搜

    晨晰部落格新站 發表在 痞客邦 留言(0) 人氣()