最近一段时间因为比赛的原因,接触了一下深度学习的内容,真的勾起了我的兴趣,因为Python和机器学习的基础比较薄弱,在学习的时候也遇到了一些困难,不过我相信任何一个成功的案例都是从模仿开始的,所以开始的时候我按照书上的方法写了一些,中间也出了一些bug,但是最后还是有惊无险的运行出来了,写一篇纯属是为了巩固一下,没有误人子弟的意思哈。
案例的全称就是:Keras多层感知器预测泰坦尼克号上旅客的生存概率
其实无论多么复杂的问题,都是万变不离其宗,在深度学习方面更是这样,就是模拟人类的神经网络,通过多层的处理和优化,进一步达到与真实值相近的程度。
步骤:
1、数据预处理
2、建立模型
3、开始训练
4、评估模型准确率
因为图形编辑器还不是很会用,先用张图片吧,草台班子一样。
发现图片也不好用,直接键盘打吧
1、数据预处理
此次用的数据不再是常见的图片数据集,而是一个标准的Excel表格,所以在数据预处理进行数据的相应转换的时候,应该采取不同的处理方法。
这个阶段是在输入层之前进行操作,将产生的9个特征字段作为输入传进输入层中去。代码部分氛围两部分:一部分是数据的转化和处理,一部分是数据的分类和比例的划分。
直接粘上数据处理字段的代码了,不多说了:
from keras.models import Sequential
from keras.layers import Dense,Dropout
import urllib.request
import os
import tarfile
import pandas as pd
import numpy
from sklearn import preprocessing
file_path="E:\深度学习\Dataes/titanic3.xls"
all_df=pd.read_excel(file_path)
cols=['survived','name','pclass','sex','age','sibsp','parch','fare','embarked']
all_df=all_df[cols]
msk=numpy.random.rand(len(all_df))<0.8
train_df=all_df[msk]
test_df=all_df[~msk]
def PreprocessData(raw_df):
df = raw_df.drop(['name'], axis=1)
age_mean = df['age'].mean()
df['age'] = df['age'].fillna(age_mean)
fare_mean = df['fare'].mean()
df['fare'] = df['fare'].fillna(fare_mean)
df['sex'] = df['sex'].map({'female': 0, 'male': 1}).astype(int)
x_OneHot_df = pd.get_dummies(data=df, columns=["embarked"])
ndarray = x_OneHot_df.values
Features = ndarray[:, 1:]
Label = ndarray[:, 0]
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1))
scaledFeatures =