用SPK技術分析,泰坦尼克號沉船以後哪些人活下來了

本文采用Kaggle中比較知名的數據集Titanic Machine Learning from Disaster做爲分析數據源,該數據集被評爲五大最適合數據分析練手項目之一。算法

分析目的是根據訓練集預測部分乘客在沉船事件中是否會存活?框架

數據分析的整個流程以下:
    (1)數據清洗
    (2)特徵工程
    (3)缺失值
    (4)模型設計與預測機器學習

1. 數據的下載和字段的描述分佈式

數據的下載地址爲https://www.kaggle.com/c/titanic/data 工具

目前,咱們已經對變量,變量類型及其前幾個取值狀況有了初步的瞭解。學習

咱們知道: 咱們的目標是要預測生存狀況(Survived)——因變量可供使用的自變量11個。測試

2. 使用的分析工具介紹大數據

咱們使用的工具是FEA-spk技術,它的底層基於最流行的大數據開發框架spark,對各類算子的操做都是基於DataFrame的。使用FEA-spk來作交互分析,不但很是簡單易懂並且幾乎和spark的功能同樣強大,更重要的一點,它能夠實現可視化,處理的數據規模更大,能夠進行分佈式的機器學習等,下面咱們就來實現這個案例。編碼

3. 案例的具體實現原語以下spa

(1) 加載數據

訓練集的數據格式如上圖所示

(2)清洗數據

 a. 觀察姓名變量

首先,我注意到在乘客名字(Name)中,有一個很是顯著的特色:乘客頭銜每一個名字當中都包含了具體的稱謂或者說是頭銜,好比Mrs,Mr等。將這部分信息提取出來後能夠做爲很是有用一個新變量,能夠幫助咱們預測。

下面咱們統計一下Title各個類別的個數。

下面咱們將字符串映射爲對應索引。

b.家庭狀況是否會影響生存結果?

目前爲止,咱們已經處理完乘客姓名這一變量,並從其中提取了一些新的變量。 下一步考慮衍生一些家庭相關的變量。首先,生成家庭人數family_size這一變量。能夠基於已有變量SubSp和Parch(具體含義參照上面)。

family_size=SubSp+Parch+1(包括本身)。

缺失值

————————————————————————————————————————————

如今咱們開始對原始數據當中的缺失值進行處理(填補)。具體作法有不少種,考慮到數據集自己較小,樣本數也很少,於是不能直接整行或者整列刪除缺失值樣本。那麼只能經過現有數據和變量對缺失值進行預估填補。例如:能夠用均值中位數模型填補缺失值,這裏使用後面兩種方式進行。

首先查看一下哪些字段有缺失值。

能夠看到Age字段,Embarked字段有缺失值, Cabin字段雖然有缺失值,可是缺失值太多了,因此這個變量不考慮。Age字段爲數值型,可使用平均值進行填充,Embarked字段爲字符型,選擇頻率最大的字符進行填充。

能夠看到出現次數最多的字符是S。

能夠看到沒有缺失值了。

特徵工程

—————————————————————————————————————————————

因爲機器學習只支持數字類型,因此咱們要將字符型的數據轉化爲數字類型的。

首先對於Sex字段,只有male,female兩種類型,要將它轉化爲數字類型。

Embarked字段,一樣要將字符型的數據轉化爲數字類型的,而後將其映射爲獨熱編碼。

而後刪除不須要的列。

 

因爲Spark機器學習須要的數據類型爲double類型,因此咱們將字符類型的轉化爲double類型。

模型設定與預測

———————————————————————————————————————————

在完成上面的工做以後,咱們進入到最後一步:預測泰坦尼克號上乘客的生存情況。 在這裏咱們使用邏輯迴歸算法。咱們前期那麼多工做都是爲了這一步服務的。首先咱們要將全部的特徵值聚合爲向量。

咱們發現數據格式不一致,因此咱們要進行歸一化處理。

下面就是創建邏輯迴歸模型了。

此刻的模型已經創建好了,下面咱們來評價模型的好壞

能夠看到準確率達到了86%,若是想提升精確度,能夠進行參數的調節

下面開始預測是否他們存活下來,這個時候就要用到測試集了,對測試集進行一樣的變換,這裏再也不敘述了,變換後的df表以下所示

下面開始使用訓練好的模型進行預測。

其中prediction列就是預測的結果,1表明活下來了,0表明沒有獲救。

最後咱們還能夠把模型保存在hdfs上面,以便下次進行使用。

加載模型的時候就能夠從上面加載下來,直接使用了。

以上就是預測泰坦尼克號獲救的完整案例,後面會有更加精彩的內容推薦,歡迎關注!

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息