美文网首页
Keras 预测泰坦尼克号旅客生存概率

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

作者: Stefan0 | 来源:发表于2018-10-17 11:05 被阅读0次

    泰坦尼克数据集训练集共有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
    然后查看前两项旅客数据


    图片.png

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


    图片.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值的字段


      图片.png

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


      图片.png

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


    图片.png

    4.将DataFrame转换为Array


    图片.png
    第一个字段是label,后面的是features

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


    图片.png

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


    图片.png

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


    图片.png

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


    图片.png

    相关文章

      网友评论

          本文标题:Keras 预测泰坦尼克号旅客生存概率

          本文链接:https://www.haomeiwen.com/subject/ehklzftx.html