開始學習資料科學,從鐵達尼號數據集開始。
她是個文科生,數學、物理、化學、生物、地科等非人文科學的科目,對她而言無法產生任何有趣、好奇、好玩等回饋,只有「難以理解的恐懼」。這樣的她,卻說要學習資料科學。
生在21世紀,不看看這些知識就結束,也太可惜
憑著這句有些天真的話,報名了資料科學的線上課,才開始第一堂課,我就聽到她的哀嚎
數學不會就是不會!
我跟她說以前也許只能認命,但現在有AI!她又燃起一絲希望,開始跟著AI從零開始學習......
目標:找出特徵強度
Step0:讀取資料
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
train_df = pd.read_csv('./titanic/train.csv')
print(train_df.head())
Step1:觀察資料 (Exploratory Data Analysis, EDA)
觀察資料量哪些是有用的數據、是否缺失、先用描述性統計來驗證猜想。
目的:透過觀察原始數據做出接下來的決策,例如:用什麼直補缺失值、是否拿掉欄位
train_df.describe()
Name Sex Ticket Cabin Embarked
count 891 891 891 204 889
unique 891 2 681 147 3
top Braund, Mr. Owen Harris male 347082 G6 S
freq 1 577 7 4 644
猜想 A:女性生存率較高?
print(train_df[['Sex', 'Survived']].groupby(['Sex']).mean())
Survived
AgeBin
(0, 12] 0.579710
(12, 18] 0.428571
(18, 35] 0.382682
(35, 60] 0.400000
(60, 100] 0.227273
猜想B:有錢人(高艙等)更有可能活下來?
print(train_df[['Pclass', 'Survived']].groupby(['Pclass']).mean())
Survived
Pclass
1 0.629630
2 0.472826
3 0.242363
猜想C:年紀較小的乘客更有可能活下來?
print(train_df[['Age','Survived']].groupby(['Age']).mean())
結果卻是
urvived
Age
0.42 1.0
0.67 1.0
0.75 1.0
0.83 1.0
0.92 1.0
... ...
70.00 0.0
70.50 0.0
71.00 0.0
74.00 0.0
80.00 1.0
[88 rows x 1 columns]
為什麼會這樣呢?
分組分得太細了!
每個人的年紀都自己一組,存活率不是1就是0,Age 的原始數據太零散,無法直接產生統計意義。
解法:分箱 (Binning)
# 把年齡切成 5 個區段
train_df['AgeBin'] = pd.cut(train_df['Age'], bins=[0, 12, 18, 35, 60, 100])
# 再看一次平均值
print(train_df[['AgeBin', 'Survived']].groupby(['AgeBin']).mean())
Survived
AgeBin
(0, 12] 0.579710
(12, 18] 0.428571
(18, 35] 0.382682
(35, 60] 0.400000
(60, 100] 0.227273
核心特徵的「分佈」
- Sex (性別):
top = male,freq = 577。- 解讀:全船男性佔了大多數(577/891)。結合之前算的女性生存率高,這代表大多數男人都在這次災難中遇難了。
# 同時用 Pclass 和 Sex 分組
print(train_df.groupby(['Pclass', 'Sex'])['Survived'].mean())
結果
Pclass Sex
1 female 0.968085
male 0.368852
2 female 0.921053
male 0.157407
3 female 0.500000
male 0.135447
Name: Survived, dtype: float64
是否可以說 男性與女性的生存率跟他們在哪個艙等沒什麼關聯? 因為基本上女性存活率比男性高
結論:「性別是核心,女性普遍比男性高。」 但資料科學家會補上一句:「但在同性別內部,艙等決定了你是 96% 還是 50% 的生存機會。」
這兩個特徵有不同的 「權重 (Weight)」:
- 性別 (Sex):是決定性特徵。它解釋了數據中大部分的變化。
- 艙等 (Pclass):是輔助修正特徵。它在性別的基礎上,進一步推高或拉低了生存率。
- 一等艙女性 (0.968):幾乎是「保證獲救」。
- 三等艙女性 (0.500):只有一半的機會活下來。
- 一等艙男性 (0.368)
- 三等艙男性 (0.135)
一等艙男性的生存率是三等艙男性的 2.7 倍。雖然他們都比女性危險,但有錢的男人顯然比窮苦的男人有更多機會(可能是因為更靠近甲板或更有資源)。



















