基于JupyterNoteBook(Annaconda3)搭建的tensorflow开发环境。
所使用到的数据集见我的博客上传的资源中,欢迎大家下载。
import pandas as pd
import keras
import numpy as np
from keras import layers
# 1)Pandas模块读取数据
data = pd.read_csv('./dataset/tt/train.csv')
# 2)数据预处理
y = data.Survived
x = data[['Pclass', 'Name', 'Sex', 'Age', 'SibSp','Parch', 'Fare','Embarked']]
# 独热编码
#[1,0,0] 原始数据进行数值化
x.loc[:,'Embarked_S'] = (x.Embarked =='S').astype('int')
x.loc[:,'Embarked_C'] = (x.Embarked == 'C').astype('int')
x.loc[:,'Embarked_Q'] = (x.Embarked == 'Q').astype('int')
del x['Embarked']
# 对性别的字符形式改为int形式
x.loc[:,'Sex'] = (x.Sex == 'male').astype('int')
# 对存在NAN的年龄设置为整体的平均年龄
x['Age'] = x.Age.fillna(Age.mean())
# Pclass 是 序列特征 === 独热编码化 === 最好的
x['p1'] = (x.Pclass == 1).astype('int')
x['p2'] = (x.Pclass == 2).astype('int')
x['p3'] = (x.Pclass == 3).astype('int')
del x['Pclass']
# 查看形状
x.shape, y.shape
# 3)建立模型
model = keras.Sequential()
model.add(layers.Dense(32, input_dim=12, activation='relu'))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
# 因为最后我们需要输出一个概率值,所以加sigmoid激活函数
model.summary() #查看模型
# 4)编译模型
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['acc']
)
# 5)训练模型
history = model.fit(x,y, epochs=300)