Kaggle 入門 1.1——A Journey through Titanic
介紹 Kaggle Titanic 比賽排名第一的 Kernel,原代碼地址如下:
A Journey through Titanic
我個人整理後的 Jupyter Notebook 地址如下:
tommyjiang/data-new-energy
對該 Notebook 簡要梳理如下。
# 準備工作
需要的 package:
- numpy
- pandas
- matplotlib
- seaborn
- sklearn
# 數據統計
訓練集數據:891行,12。
具體信息如下:
- 整數型
- PassengerId 乘客序號
- Pclass 艙位
- SibSp 船上兄弟姐妹個數
- ParCh 船上父母孩子個數
- Survived 存活
- 浮點型
- Age 年齡
- Fare 船票費用
- 字元型
- Name 姓名
- Sex 性別
- Ticket 票信息
- Cabin 艙位
- Embarked 登船港口
其中缺失數據的列包括:
- Age:714,缺少177(19.86%)
- Cabin:204,缺少687(77.10%)
- Embarked:889,缺少2(0.22%)
測試集數據:418行,11列,與訓練集相差的一列即需要我們預測的 Survived 列。
其中缺失數據的列包括:
- Age:332,缺少86(20.57%)
- Cabin:91,缺少687(78.23%)
- Fare:417,缺少1(0.24%)
# 特徵選擇
這部分主要考慮選擇11列中的哪些列作為分類器的輸入 feature。
## PassengerId
該列主要用於排序,去掉。
## Ticket
看不出明顯的信息,去掉。
## Embarked
不同 Embarked 的存活率對比如下圖:
由上圖可看出,不同 Embarked 變數對應的存活率有比較明顯的區別,因此本 Kernel 的作者選擇與 Embarked 相關的 dummy variable,但考慮到 S 港口的存活率較低,因此去掉該列,僅保留 C 和 Q 列,即認為在 C 和 Q 登船對存活率會有提升。
## Fare
由於 Fare 數據有缺失,因此先處理缺失值,利用中位數補充。
做出存活和非存活者的 Fare 的平均值:
可以看到存活者 Fare 的平均值明顯高於非存活者,故保留該列。
## Age
災難面前讓老人和孩子先逃生,所以 Age 變數非常重要。但問題是訓練集和測試集的 Age 數據均缺少約20%,因此核心是如何處理這些缺失值。
本 Kernel 中採用的是統計 Age 的均值和標準差,然後在[均值-標準差, 均值+標準差]之間生成隨機數,填充缺失值。
填充前後的 Age 變數的對比,可以看到集中填充的是中間部分:
## Cabin
缺失值太多,將近80%,去掉。
## SibSp 和 ParCh
將 SibSp 和 Parch 統一考慮,相加大於0說明該乘客在船上有親屬,Family 變數設為1,否則設為0。
對比有無親屬乘客的存活率:
可以看到有親屬的乘客存活率明顯較高,因此保留。
## Sex
Sex 部分對小於16歲的兒童單獨處理,只考慮16歲以上的成人,分為 Male, Femail 和 Child,各組的存活率如下圖:
可以看到 Female 和 Child 的存活率明顯高於 Male。處理方法與 Embarked 相同,保留 Female 和 Child,去掉 Male。
## PClass
不同 PClass 存活率對比:
處理方法與 Embarked 相同,保留 1 和 2,去掉 3。
## 特徵選擇總結
特徵選擇後,訓練集信息如下:
處理過程前面已經分別敘述。
# 分類模型
特徵選擇完成後,即可將其用於分類模型,本 Kernel 共考慮五種模型:
- 邏輯斯諦回歸(Logistic Regression)
- 支持向量機(Support Vector Machine)
- 隨機森林(Random Forest)
- k 近鄰(K Nearest Neighbors)
- 高斯樸素貝葉斯(Gaussian Naive Bayes)
直接利用全部訓練集訓練模型,模型基本採用的均為默認參數,沒有進行參數調優。
各模型在訓練集和測試集的得分如下:
可以看到默認參數的模型在訓練集上表現都還可以,但在測試集上的表現就比較慘了。後面我們會繼續討論如何調整模型參數獲得更好的預測效果。
推薦閱讀:
※【持續更新】機器學習特徵工程實用技巧大全
※深度學習入門:Tensorflow實戰Digit Recognizer(一)
※kaggle小黃車競賽 得分:0.41038
※Kaggle—So Easy!百行代碼實現排名Top 5%的圖像分類比賽
※Zillow簡介(二)如何重構經紀行業的產業鏈?