天天看點

拓端tecdat|R語言Kaggle泰坦尼克号性别階級模型資料分析案例

原文連結:http://tecdat.cn/?p=6062

原文出處:拓端資料部落公衆号

這場災難以拯救“婦女和兒童第一”而聞名,是以讓我們來看看性别和年齡變量。我們将從乘客的性别開始。将資料重新加載到R後,請檢視此變量的摘要:

> summary(train$Sex)

female male

314 577
           

是以我們看到大多數乘客都是男性。對幸存的男性和女性進行比較:

> prop.table(table(train$Sex, train$Survived))

0 1

female 0.09090909 0.26150393

male 0.52525253 0.12233446
           

我們希望看到的是行比例,即存活的每個性别的比例。

> prop.table(table(train$Sex, train$Survived),1)

0 1

female 0.2579618 0.7420382

male 0.8110919 0.1889081
           

我們現在可以看到大多數女性幸存下來,并且男性的比例非常低。

> test$Survived <- 0

> test$Survived[test$Sex == 'female'] <- 1
           

在這裡,我們添加“everyone dies”預測列,将零指定給整個列。然後我們改變其中女性乘客為1。

現在讓我們寫一個新的送出并發送給Kaggle

拓端tecdat|R語言Kaggle泰坦尼克号性别階級模型資料分析案例

現在讓我們研究年齡變量:

> summary(train$Age)

Min. 1st Qu. Median Mean 3rd Qu. Max. NA's

0.42 20.12 28.00 29.70 38.00 80.00 177
           

資料分析中缺少值,這可能會導緻各種問題,而這些問題有時很難處理。目前我們可以假設177個缺失值是其餘乘客的平均年齡。

現在我們有一個連續的變量,我們建立一個新的變量“Child”來表明乘客是否低于18歲:

> train$Child <- 0

> train$Child[train$Age < 18] <- 1
           

現在我們要建立一個包含性别和年齡的表,以檢視不同子集的生存比例。首先讓我們嘗試找出不同子集的幸存者數量:

> aggregate(Survived ~ Child + Sex, data=train, FUN=sum)

Child Sex Survived

1 0 female 195

2 1 female 38

3 0 male 86

4 1 male 23
           

但我們不知道每個子集中的總人數; 讓我們來看看:

> aggregate(Survived ~ Child + Sex, data=train, FUN=length)

Child Sex Survived

1 0 female 259

2 1 female 55

3 0 male 519

4 1 male 58
           

我們需要建立一個函數,它将子集向量作為輸入,然後進行除法以給出一個比例。

> aggregate(Survived ~ Child + Sex, data=train, FUN=function(x) {sum(x)/length(x)})

Child Sex Survived

1 0 female 0.7528958

2 1 female 0.6909091

3 0 male 0.1657033

4 1 male 0.3965517
           

雖票價是一個連續變量,需要将其簡化為可以輕松制表的内容。我們将票價收入不到10美元,10美元到20美元,20美元到30美元以及30美元以上,并将其存儲到一個新變量中:

> train$Fare2 <- '30+'

> train$Fare2[train$Fare < 30 & train$Fare >= 20] <- '20-30'

> train$Fare2[train$Fare < 20 & train$Fare >= 10] <- '10-20'

> train$Fare2[train$Fare < 10] <- '<10'
           

現在讓我們運作一個更長的聚合函數,看看這裡有什麼有趣的東西:

> aggregate(Survived ~ Fare2 + Pclass + Sex, data=train, FUN=function(x) {sum(x)/length(x)})

Fare2 Pclass Sex Survived

1 20-30 1 female 0.8333333

2 30+ 1 female 0.9772727

3 10-20 2 female 0.9142857

4 20-30 2 female 0.9000000

5 30+ 2 female 1.0000000

6 <10 3 female 0.5937500

7 10-20 3 female 0.5813953

8 20-30 3 female 0.3333333 **

9 30+ 3 female 0.1250000 **

10 <10 1 male 0.0000000

11 20-30 1 male 0.4000000

12 30+ 1 male 0.3837209

13 <10 2 male 0.0000000

14 10-20 2 male 0.1587302

15 20-30 2 male 0.1600000

16 30+ 2 male 0.2142857

17 <10 3 male 0.1115385

18 10-20 3 male 0.2368421

19 20-30 3 male 0.1250000

20 30+ 3 male 0.2400000
           

大部分男性和票價表現效果不好。

讓我們根據新的見解做出新的預測。

> test$Survived <- 0

> test$Survived[test$Sex == 'female'] <- 1

> test$Survived[test$Sex == 'female' & test$Pclass == 3 & test$Fare >= 20] <- 0
           

好的,讓我們建立輸出檔案,看看我們是否做得更好!

拓端tecdat|R語言Kaggle泰坦尼克号性别階級模型資料分析案例

有問題歡迎下方留言!

拓端tecdat|R語言Kaggle泰坦尼克号性别階級模型資料分析案例

最受歡迎的見解

1.資料類崗位需求的資料面

2.探析大資料期刊文章研究熱點

3.機器學習助推快時尚精準銷售預測

4.用機器學習識别不斷變化的股市狀況—隐馬爾科夫模型(HMM)的應用

5.資料聆聽人民網留言闆的那些“網事”

6.在r語言中使用GAM(廣義相加模型)進行電力負荷時間序列分析

7.用資料解讀體育決策:挖掘體育賽事新價值

8.把握計程車行駛的資料脈搏

9.智能門鎖“剁手”資料攻略

繼續閱讀