之前就看過很多文章教學,一直想練習一次。但是沒啥執行力,剛好趁這次機會逼迫自己放棄耍費的時間。


實驗環境、語言 : Ubuntu 18.04、Python3
在安裝環境就遇到了許多問題 = ='
簡單說就是為了避免一堆東西沒升級,所以就無腦下

    sudo apt-get update
    sudo apt-get upgrade

結果造成某些process因為某些原因pending在系統上,並且在update & upgrade 過程中,會將/var/lib/dpkg/lock-fronted 這資料夾lock住(我猜是避免有deadlock的產生)

這資料夾被lock住,有許多cmd就沒辦法做事拉,像是pip
這問題要怎麼解呢?

  1. sudo lsof /var/lib/dpkg/lock-fronted
  2. 找出是哪個process正在使用這個資料夾
  3. sudo kill process_ID
  4. 重下 sudo apt-get install -f

好以上都不是重點。
這題主要是要預估乘客生存率
所以資料及有

  • PassengerId 乘客編號
  • Survived 是否倖存
  • Pclass 船票等級
  • Name 乘客姓名
  • Sex 乘客性別
  • Age 年齡
  • SibSp 堂兄弟妹
  • Parch 父母與小孩
  • Ticket 船票號碼
  • Fare 船票價格
  • Cabin 船艙
  • Embarked 登入港口

嘗試透過各個資料去找出其中的關連性

首先就是將各個module import近來

import pandas as pd
import numpy as np
import seaborn as seab
import matplotlib.pyplot as plt

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
submit = pd.read_csv('gender_submisson.csv')

先看看train / test 有什麼樣的東西

從info()可以看的出來,資料大概有891比,其中某些欄位有缺少幾筆data,像是Age、Cabin。

接下來做整體資料的觀察,因此將train&test合併

data = train.append(test)
data.reset_index(inplace=True,drop=True)

接下來就可以透過整體的資料看點東西了。

整體存活率

存活率與船艙的關係(橫軸船艙等級)

性別與存活率的關係(橫軸性別等級)

出發港口與存活率的關係(橫軸性別等級)

由上述可以得到結論為

  • 生存率 : 女生>男生
  • 船艙越好的生存率越高
  • 從港口S出發的生存率較低是因為票價較便宜(同第二點)

決策樹 (Decision Tree)

好 這邊先歪個樓
來介紹 決策樹 (Decision Tree)
決策樹簡而言之就是一種樹狀結構。
最上面是 Root 最下面的 leaf 則是分類結果。
透過樹狀結構來處理分類問題。
選出最能夠分類的屬性來當作每一個節點,這樣才能從根走到葉的過程中有效的分類。
至於甚麼樣的分類屬性是好的呢?
目前常用 Information Gain 與 Gini Index

Information Gain 資訊獲利 (Entropy)

Entropy : 熵(亂度)

熵是對某個系統之不確定性或混亂程度的度量方法
Entropy = -p log2 p – q log2q

當機率月平均,就代表這個事件機率越均勻,Entropy則越高。
越不好進行預測。

變數的不確定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
該事件的機率p x log2(p)
因此在決策樹中的應用,應該是要選小的Entropy(變數不確定性越小)才是好的判斷方式。

Gini Impurity


同理也是選大的
當機率越不平均,越能夠表現出是不是好的判斷方式。


當我們建出樹後,就可透過每一個節點去判斷屬於哪個分類了。
這個就是決策樹原理。
而Random forest 就是合併很多顆決策樹XD
剩下的債明天補 XD

reference link
reference link
reference link

reference link

reference link

#AI #data science #ML #DL #Open Data







你可能感興趣的文章

Redux

Redux

[筆記] 建立 Redis 及 Redis Insight 使用 docker-compose

[筆記] 建立 Redis 及 Redis Insight 使用 docker-compose

Day 98

Day 98






留言討論