決策樹實戰:Titanic 生還預測
03-03
1 Titanic: Machine Learning from Disaster
該問題是數據科學競賽網站 kaggle 的入門題,其內容為根據乘客的信息預測是否獲救。本例僅很淺顯的介紹決策樹用於數據挖掘的過程。
2 數據
數據可從 kaggle 下載,利用 Pandas 讀入數據,顯示如下。
共 11 個屬性
和 1 個標籤
。乘客的 11 個屬性
分別為:
- PassengerId:乘客ID
- Pclass: 艙位等級
- Name:姓名
- Sex:性別
- Age:年齡
- SibSp:同輩親戚個數
- Parch:不同輩親戚個數
- Ticket:票號
- Fare:票價
- Cabin:客艙號
- Embarked:登船港口
1 個標籤
為是否獲救:
- (Survived = 0)
- (Survived = 1)
這裡很簡單的處理特徵選取
的問題,根據猜測,影響是否獲救的因素應該主要跟以下幾個因素有關:艙位等級、性別、年齡和票價。主要使用上述4個特徵,先查看以下這 4 個變數的情況以及和獲救的關係。
可以看到:
- 頭等艙的生還率最高,生還率隨著艙位的降低而降低;
- 大概 70% 的女性獲救,明顯高於男性;
- 票價最高的組生還率明顯高於票價最低的組,該因素與艙位等級應有相關性;
- 小孩生還率高於其他年齡組,施救原則應該是老幼婦女優先,猜測由於年老行動不便,老年人生還率低於其他年齡組。
考慮到票價和艙位等級相關,去除票價,我們採用三個屬性
,利用決策樹演算法預測生還情況。
3 決策樹
在利用 3 屬性
和標籤
訓練決策樹之前,需要對數據進行預處理,包括對缺失值的填充和性別字元處理。我們將缺失的年齡信息填充為平均年齡,將性別轉換為 0 和 1。利用 sklearn 生成的決策樹,如圖。
決定是否生還最重要的屬性
為 Sex,其次分別為艙位等級和年齡。圖中藍色和淺藍色部分為生還,其他為不幸遇難。
生成模型之後,我們對模型進行評估,預測精度約在 80%。
推薦閱讀: