在开始之前,让我们先哀悼一下那些在这次海难中遇难的人们。
观察数据集
我们会用到数据集,这里数据集中记录泰坦尼克号乘客一些信息,在机器学习中特别是监督学习中数据占有重要地位。所以我们需要查看数据都包含那些信息,然后我们对这些信息进行筛选和处理作为训练模型的数据,说到数据我们少不了 numpy 和 pandas ,为了更直观地观察数据也引入数据可视化 python 库 matplotlib
import pandas as pd
import matplotlib.pyplot as plt
读取数据集
train = pd.read_csv('./data/train.csv')
print train.head()
检查数据丢失情况
读取训练数据集,输出每一个列包括数据量,可以查看出某些列数据并不完整,例如 carbin 只有在 204 条记录中有值。我们需要对这些数据进行处理。
print train.count()
survived 891
pclass 891
name 891
sex 891
age 714
sibsp 891
parch 891
ticket 891
fare 891
cabin 204
embarked 889
# 查看数据丢失情况
sns.heatmap(train.isnull(),yticklabels=False,cbar=False,cmap='viridis')
titanic_missing_data.png
这样可以更加直观观察数据丢失的情况,可以清楚看出 age 和 carbin 字段丢失比较严重,特别是 cabin。
df.survived.value_counts(normalize=True).plot(kind="bar",alpha=0.5)
plt.title("Survived")
遇难者和幸存者比例
在上面直方图中,0 表示遇难者 1 表示幸运者,遇难者大约 60%
fig = plt.figure(figsize=(18,6))
plt.subplot2grid((2,3),(0,0))
df.survived.value_counts(normalize=True).plot(kind="bar",alpha=0.5)
plt.title("Survived")
plt.subplot2grid((2,3),(0,1))
plt.scatter(df.survived,df.age,alpha=0.1)
plt.title("Age wrt Survived")
plt.show()
# 查看乘客的年龄分布
# sns.distplot(train['age'].dropna(),kde=False,bins=30,color='Green')
幸存者和遇难者年龄分布图
在图Age wrt Survived 中横坐标 0 代表遇难者 1 代表幸存者,可以发现幸存者年龄要小于遇难者的年龄。
乘客年龄分布plt.subplot2grid((2,3),(0,2))
df.pclass.value_counts(normalize=True).plot(kind="bar",alpha=0.5)
plt.title("class")
客舱等级
图
plt.subplot2grid((2,3),(1,0),colspan=2)
for x in [1,2,3]:
df.age[df.pclass == x].plot(kind="kde")
plt.title("class wrt age")
乘客按不同上船地点分布
根据性别幸存者和遇难者直方图
屏幕快照 2019-11-06 上午6.15.25.png
屏幕快照 2019-11-06 上午6.17.52.png
plt.subplot2grid((3,4),(1,0),colspan=4)
for x in [1,2,3]:
df.survived[df.pclass == x].plot(kind="kde")
plt.title("Class wrt Sruvived")
plt.legend(("1st","2nd","3rd"))
网友评论