在本次实战,会用到numpy和pandas等模块,不会的话,请补完自己的知识空区。
数据预处理
1 | import pandas as pd |
数据字段含义如下:
接着我们把一些没有什么用的字段删掉,比如Name、Ticket
1 | data=data[["Survived","Pclass","Sex","Age","SibSp","Parch","Fare","Cabin","Embarked"]] |
接着,我们发现有一些NAN的数据,我们用年龄的平均填充一下,即使使用平均年龄填充并不是很好
1 | data["Age"]=data["Age"].fillna(data["Age"].mean()) |
对Cabin字段数值化,数值化返回的是一个元祖,元祖后的第一项就是数值化后的值
1 | data["Cabin"]=pd.factorize(data.Cabin)[0] |
对其它的NAN数据都填充为0
1 | data.fillna(0,inplace=True) |
对Sex特征进行数值化
1 | data["Sex"]=[1 if x=="male" else 0 for x in data.Sex] |
对Pclass进行one-hot编码,添加三个特征,将Pclass特征删除
1 | data["p1"]=np.array(data["Pclass"]==1).astype(np.int32) |
对Embarked,首先知道它有三个港口,0是我们刚刚填充NAN的。
1 | print(data.Embarked.unique()) |
接着对Embarked进行one-hot编码,再删除Embarked特征
1 | data["e1"]=np.array(data["Embarked"]=="S").astype(np.int32) |
数据的预处理就结束了
提取训练数据
1 | data_train=data[["Sex","Age","SibSp","Parch","Fare","Cabin","p1","p2","p3","e1","e2","e3"]] |
数据标签
1 | data_target=data["Survived"].values.reshape(len(data),1) |
搭建神经网络
1 | x = tf.placeholder("float", shape=[None, 12]) |
可视化
1 | import matplotlib.pyplot as plt |
全部代码
1 | # -*- coding: utf-8 -*- |