Keras 预测泰坦尼克号旅客生存概率

泰坦尼克数据集训练集共有1309项,经过数据预处理会产生feature(9个)与label标签字段(是否生存?1:是,2:否),最后输入多层感知器模型训练,之后进行预测
1.下载数据集
所需模块

图片.png

下载地址
url=' http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.xls'
设置文件存储路径:(要自己新建data文件夹路径,不然会报错不存在文件夹,后面的文件名一定要写上,虽然我们本地没有该文件)
filepath='C:\Users\zhangsheng\Desktop\Untitled Folder\data\titanic3.xls'

判断文件是否存在,不存在就会下载
if not os.path.isfile(filepath):
result=urllib.request.urlretrieve(url,filepath)
print('download:',result)
2.使用pandas 的DataFrame读取数据并进行预处理
导入所需的模块,并使用pandas的read_excel()方法把xls文件读取到DataFrame
然后查看前两项旅客数据


Keras 预测泰坦尼克号旅客生存概率_第1张图片
图片.png

(注意这里先要安装xlrs模块,要不然会报错没有该模块)
上面字段的survival是label标签,也就是我们要预测的目标,其余都是特征字段
并且ticket(船票号码)和cabin(舱位号码)与预测结果无关,将其忽略。
我们选择一下字段到DataFrame中,并显示前两项


Keras 预测泰坦尼克号旅客生存概率_第2张图片
图片.png

还有以下问题必须处理!!!!
name 姓名字段在训练时不需要,必须先删除,但在预测阶段会使用
age 有些项的age字段是null,必须将null改为平均值
fare 同age
sex 性别字段是文字,需转换为0和1
embarked 登船港口有三个分类 需使用One-Hot Encoding 转换

3.数据预处理

  1. 使用drop方法 删除name
    df = all_df.drop(['name'],axis=1)
    找出含有null值的字段


    Keras 预测泰坦尼克号旅客生存概率_第3张图片
    图片.png

    计算age的平均值 age_mean,然后将null值替换为平均值,fare同理


    Keras 预测泰坦尼克号旅客生存概率_第4张图片
    图片.png

性别字段是文字,使用map方法 转换为0,1
将embarked字段转换为一位有效编码
查看转换后的DataFrame


Keras 预测泰坦尼克号旅客生存概率_第5张图片
图片.png

4.将DataFrame转换为Array


Keras 预测泰坦尼克号旅客生存概率_第6张图片
图片.png

第一个字段是label,后面的是features

提取features和label
Label = ndarray[:,0] #冒号提取所有项,0字段是标签
Features = ndarray[:,1:]#冒号提取所有项,1:提取第一至最后字段,即特征
查看前两项:


Keras 预测泰坦尼克号旅客生存概率_第7张图片
图片.png

5.将ndarray特征字段标准化
使用preprocessing.MinMaxScaler标准化,参数feature_range设置标准化的范围(0,1)


Keras 预测泰坦尼克号旅客生存概率_第8张图片
图片.png

6.将数据分为训练集和测试集
按照8:2的比例,使用numpy.random.rand产生msk


Keras 预测泰坦尼克号旅客生存概率_第9张图片
图片.png

定义数据预处理的函数:将之前的预处理命令全部收集在函数中
对训练数据和测试数据预处理


Keras 预测泰坦尼克号旅客生存概率_第10张图片
图片.png

你可能感兴趣的:(Keras 预测泰坦尼克号旅客生存概率)