最近一直斷斷續續的做這個泰坦尼克生存預測模型的練習,這個kaggle的競賽題,網上有很多人都分享過,而且都很成熟,也有些寫的非常詳細,我主要是在牛人們的基礎上,按照數據挖掘流程梳理思路,然后通過練習每一步來熟悉應用python進行數據挖掘的方式。
數據挖掘的一般過程是:數據預覽——>數據預處理(缺失值、離散值等)——>變量轉換(構造新的衍生變量)——>數據探索(提取特征)——>訓練——>調優——>驗證
1 數據預覽
1.1 head()
預覽數據集的前面幾條數據可以大致看看每個字段的值究竟長什么樣。

1.2 info()

可以看每個字段有多少非空值,字段的類型是什么樣的
1.3 describe()
可以大致描述每個整數或者浮點型的數值分布,看最小值,最大值和四分位數,可以大致了解數據的偏移情況。

2.數據預處理
從前面數據預覽中發現年齡(age)、船艙號(Cabin)、登岸口(Embarked)有數據的缺失。
登岸口通過后面的數據探索可以發現只有3個值,而且缺失的數量也不大,因此這里填充為眾數。
船艙號只有204個有值,一般來說,缺失比例較大的特征可以考慮舍棄,而這里聯想到缺失是否表示乘客的票本身就沒有船艙號,就像我們買的無座票一樣,本身就沒有座位號,因此這里先填充為0

年齡字段也存在缺失,一般來說,老弱病殘幼是要受到特殊照顧的,因此年齡應該會是一個比較重要的特征,並且因為它是連續值,這里采用算法預測的方式來進行填充。

最后我們來看一下填充后的數據情況

3.數據探索
3.1 各個字段值的分布情況
先看代碼:

以上是畫布相關設置
subplots_adjust()是用來調整畫布內子圖的間隔大小的。


以上是在畫布相應位置畫各個子圖的代碼。圖形如下:


3.2 探索各字段與是否生存的關系,尋找對模型有用的特征
3.2.1 不同乘客等級與是否生存的關系


艙位越高級的,生存的比例越大。3等艙里面未獲救的比例明顯增大。說明艙位與是否生存有關系。
3.2.2 性別與是否生存的關系


從數據上看,獲救的女性比例很高,電影里面也說了女士優先,因此性別與是否生存也有較大關系。
3.2.3 年齡與是否生存的關系
首先看一下年齡的分布情況和值的離散情況


從圖中可以發現大部分都是集中在20-50歲之間的,從箱線圖看平均年齡接近30歲。
因為年齡是連續值,因此我們考慮把年齡分段后,進行分段統計展示看年齡與是否生存的關系。



從數據上年紀小的生存的幾率要大些。不同年齡段的生存率明顯有差別,說明年齡與是否生存是有關系的。
3.2.4 有無兄弟姐妹與是否生存的關系



從數據上看兄弟姐妹在1-2個的生存率最高
3.2.5是否有父母子女與是否生存的關系



數據顯示父母子女個數在1-3個的生存率最高,個數越多反倒生存率下降。
3.2.6 港口與是否生存的關系

數據顯示有港口的生存率明顯高很多。可能是船中間有停靠到一些港口,有部分乘客下船了。
本文參考:大樹先生的博客
