文章目录
import pandas as pd
import keras
import numpy as np
data=pd.read_csv('./Desktop/Keras/tt/train.csv') ##使用泰坦尼克号逃生数据
data.head() ##看数据前5行
data.info()##查看数据信息
可以看出 Age数据有缺失 Cabin缺失数据更多,因此将Cabin这一列数据删除舍弃,Age没有的数据用该列所有数据平均数替代
处理数据集
y = data.Survived ##存活与否为输出
data.columns##可查看数据标签
x = data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']] ##根据实际我们把与生存与否无关的标签舍弃,保留与生存相关的标签生成新的输入数据
输入数据中‘Embarked’,‘Sex’均为字符,我们要将其转化为计算机可以处理的数值
x.Embarked.unique() ##查看Embarked有多少类别
##独热编码
x['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']##转化为数值后删除原有标签
x['Sex'] = (x.Sex == 'male').astype('int')
x['Age'] = x.Age.fillna(x.Age.mean())##将Age没有数值的地方填充为平均值
x.info()
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,y维度
x.shape, y.shape
看一下当前数据
x
建立模型
model = keras.Sequential()
from keras import layers
model.add(layers.Dense(1,input_dim=11,activation='sigmoid'))##激活函数选用sigmoid函数
model.summary()
编译模型
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['acc']
)#loss函数使用二元交叉熵 acc表示准确率
history = model.fit(x, y, epochs=300)#history存储loss,acc
history.history.keys()#看一下history存储的数据标签
画出loss acc
plt.plot(range(300), history.history.get('loss'))
plt.plot(range(300), history.history.get('acc'))