- 🌸博主主頁:@釉色清風
- 🌸文章專欄:機器學習實戰
- 🌸今日語錄:不要一直責怪過去的自己,她曾經站在霧里也很迷茫。
🌼實戰項目簡介
本次項目是kaggle上的一個入門比賽 :Titanic——Machine Learning from Disaster(泰坦尼克號——災難中的機器學習),比賽選擇了泰坦尼克號作為背景,并提供了樣本數據以及測試數據,要求我們使用機器學習創建一個模型,預測哪些乘客在泰坦尼克號沉船中幸存下來。
🌼數據文件說明
🌻泰坦尼克號項目頁面:Titanic——Machine Learning from Disaster
🌻可下載的Data頁面:
可下載包括三個文件:
- train.csv:訓練數據
- test.csv:測試數據
- gender_submission.csv :提交結果案例
🌻數據變量說明
下載好文件,可知,每個乘客有12個屬性。
- Passengerld :乘客唯一識別ID
- Survived:是否存活,0為否,1為是
- Pclass :客艙等級,分為1、2、3等級,與英國的階級分層有關
- Name:姓名
- Sex:性別
- Age:年齡
- SibSp:泰坦尼克號上的兄弟姐妹/配偶數量(與該乘客一起旅行的)
- Parch:泰坦尼克號上的父母/孩子數量(與該乘客一起旅行的)
- Ticket:船票號
- Fare:船票價格
- Cabin:客艙編號
- Embarked:上船的港口編號(S=Southampton,英國南安普頓[啟航點];C=Cherbourg,法國瑟堡市[途徑點];Q=Quenstown,愛爾蘭昆市[途徑點])
🌼數據預處理
數據的質量直接決定模型預測的結果。所以,在進行訓練模型之前,我們必須要進行數據清洗。
接下來我們使用Jupyter Notebook來進行接下來的數據描述和預處理。
🌻讀入數據
首先,我們導入pandas庫,它是python中進行數據分析和處理的一個庫。然后我們讀入我們的訓練數據集。
🌾導入數據
🌾打印數據的前幾行
默認是打印前五行,如下:
🌻做簡單的統計分析
統計特性如下:
統計有
- count: 這一列的數量(只要不是缺失值就被統計)
- mean:平均值
- std : 方差
- min:最小值
- 25%:下四分位數
- 50%:中位數
- 75%:上四分位數
- max: 最大值
通過大致的瀏覽,我們可以看到,Age列含有缺失值。
🌻對[Age]列缺失值進行填充
一般對于缺失值的填充用到均值、中位數等。在這里,我們采用均值對Age列的缺失值進行填充。在填充缺失值這里我們用到了fillna函數。
🌾fillna函數
- fillna是一個用于填充缺失值的函數,它是pandas庫中的一個方法。
- fillna函數的基本語法如下:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
🌾對[Age]列的缺失值采用均值填充法填充
填充完之后,我們再次describe。
如下圖:
🌻將字符型轉化為數值型數據
我們知道,計算機是可以處理數字的,但是無法處理字符。為了方便統計,我們將性別[Sex]和上船港口編號[Embarked]這兩列列進行處理。
🌾對[Age]列進行替換
我們在這里用到DataFrame的loc屬性:
- 在Python中,loc是一個用于數據框(DataFrame)的屬性,它用于選擇滿足特定條件的行。loc可以通過標簽或布爾數組來選擇行。
- 常見的用法有:
- 使用標簽選擇行:
df.loc[label]
2.使用布爾數組選擇行:
df.loc[bool_array]
3.使用標簽和列選擇行和列:
df.loc[start_label:end_label, start_column:end_column]
- 使用標簽選擇行:
這里我們則采用3進行替換:
🌾對[Embarked]列進行替換
替換:
然后我們進行統計新描述,發現中的數量889,存在從缺失值。
這時,我們對三個登船地點進行統計計數。發現0是最多的,即在S處登船的人最多。
所以對于缺失值,我們將用0進行填充。