之前我們用過傳統的機器學習算法預測過泰坦尼克號數據的生還情況,這次我們使用神經網絡算法來進行建模。
數據處理
數據情況
這裏的數據來源與kaggle上的數據,讀者可以自行進行下載,我們通過pandas讀取,首先看看數據的基本情況。
import numpy as np
import pandas as pd
data = pd.read_csv('titanic.csv')
data.head()
我們使用的字段有下面幾個:
- Survived:是否生還
- Pclass:船艙等級
- Sex:性別
- Age:年齡
- SibSp:手足和配偶在船上的數量
- Parch:雙親和手足在船上的數量
- Fare:費用
- Embarked:登船港口
我們把這些字段篩選出來。
缺失值處理
首先,我們看看數據的缺失情況。
data.isnull().sum()
這裏有兩個字段有缺失值,age我們用平均值,embarked我們用最多的值進行填充。
age_mean = data['Age'].mean()
data['Age'] = data['Age'].fillna(age_mean)
data['Embarked'] = data['Embarked'].fillna('S')
性別和embarked
- 性別需要換成0和1
- embarked進行啞變量
data['Sex']= data['Sex'].map({'female':0, 'male': 1}).astype(int)
data = pd.get_dummies(data=data,columns=['Embarked'])
劃分數據集
接着我們按0.8劃分數據集。
X = data.iloc[:,1:]
Y = data.iloc[:,0]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=33)
標準化
最後我們把數據進行標準化,這樣數據我們就處理完了。
from sklearn import preprocessing
scale = preprocessing.MinMaxScaler()
X_train = scale.fit_transform(X_train)
X_test = scale.transform(X_test)