首先看到这个数据集脑海中就想到了学过的二分类问题,一共11个输入维度,一个输出维度(Survived),具体如下:
咋一看就感觉passengerid和是否存活就没有关系,numpy.loadtxt无法读取带字符串的输入,这里我们用pandas读取数据分析一下
import torch
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
data_train = pd.read_csv("./dataset/train.csv")
输出一下大概是这样
输出data_train.info()
发现Age(年龄)属性和Cabin(座位号)是有缺失的
输出train_data.describe()
粗略的发现只有0.38的存活率,平均乘客年龄大概是29等,还是要单一变量法查看每一个特征与结果的联系,pid(乘客编号)显然不是特征
1.Pclass(船舱等级)与是否存活的关系
import torch
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
data_train = pd.read_csv("./dataset/train.csv")
Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()
#print(Survived_0)
Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts()
#print(Survived_1)
df = pd.DataFrame({u'live': Survived_1, u'unlive': Survived_0})
#print(df)
df.plot(kind='bar', stacked=True)
plt.show()
显然再1号船舱大部分人都活下来了,2号船舱一半活下来了,3号大半都挂了
2.sex(性别属性)
code:
Survived_male = data_train.Survived[data_train.Sex == 'male'].value_counts()
Survived_female = data_train.Survived[data_train.Sex == 'female'].value_counts()
df = pd.DataFrame({u'男性': Survived_male, u'女性': Survived_female})
print(df)
df.plot(kind='bar', stacked=True)
plt.title(u"按性别看获救情况")
plt.xlabel(u"性别")
plt.ylabel(u"人数")
plt.show()
显然生存下来的女性要多一点,所以性别也是一个特征
3.Embarked(上船的港口)
code:
Survived_1 = data_train.Embarked[data_train.Survived == 1].value_counts()
Survived_0 = data_train.Embarked[data_train.Survived == 0].value_counts()
df = pd.DataFrame({u'存活': Survived_1, u'死亡': Survived_0})
print(df)
df.plot(kind='bar', stacked=True)
plt.title(u"按登陆港口看获救情况")
plt.xlabel(u"港口")
plt.ylabel(u"存活")
plt.show()
显然在不同的港口上船死亡率不同
4.Sipsp(乘客的兄弟姐妹和配偶数量)和Parch(乘客的父母与子女数量)
sipsp:
parch:
5.Fare(票价)
6.Cabin因为缺少太多直接舍弃了===但是我觉得是会有影响的
2.Age属性
刚才我们看到了age属性有714/891,所以需要做一个补全,