美文网首页爬虫专题
Keras--第一个神经网络模型

Keras--第一个神经网络模型

作者: CodeFUN | 来源:发表于2019-04-25 14:59 被阅读146次

    步骤如下:
    1. 导入数据
    2. 定义模型
    3. 编译模型
    4. 训练模型
    5. 评估模型
    6. 代码整理
    数据集:采用免费的数据集,地址:http://archive.ics.uci.edu/ml/datasets.php
    本节利用XX病诊断数据集,数据集包括系列特征数据,是否患糖尿病,以及未来5年内的发病率,为一个二元分类问题(患病为1,不患病为0),而其特征变量包括相应的生理参数值,下面为其中一行数据:

    1,85,66,29,0,26.6,0.351,31(年龄),0(是否患病)
    数据结构为8个属性参数,1个输出结果(患病与否)

    #导入相关模块
    from keras.models import Sequential
    from keras.layers import Dense#Dense为全连接层
    import numpy as np
    

    导入数据

    #导入数据
    dataset=np.loadtxt('dataset.txt',delimiter=',')
    #分割数据,获取前8个属性值及最后一位结果数据
    x=dataset[:,0:8]
    y=dataset[:,8]
    

    构建神经网络

    model=Sequential()#序贯模型
    model.add(Dense(12,input_dim=8,activation='relu'))#网络中的第一层,有12个神经元,使用8个输入量,add()函数将层
    # 添加到模型,激活函数使用ReLU
    model.add(Dense(8,activation='relu'))#隐含层有8个神经元
    model.add(Dense(1,activation='sigmoid'))#输出层1个神经元,激活函数为sigmoid函数
    

    编译模型

    编译模型是为了使模型使用Keras封装的数据进行计算,Keras可以根据后端自动选择最佳方法来训练模型,进行预测
    训练一个神经网络,意味着找到最佳的权重集来对问题作出预测
    模型的编译需要指定用于评估一组权重的损失函数loss,用于搜索网络不同权重的优化器optimizer,以及希望在模型训练
    期间收集和报告的可选指标
    在Keras中,对二进制分类问题的损失函数定义为二进制交叉熵

    model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])#以分类准确度为度量模型的标准
    

    训练模型

    model.fit(x=x,y=y,epochs=150,batch_size=10)#epochs决定迭代次数,batch_size为在执行神经网络中的权重更新的每
    # 个批次中所用实例的个数
    

    评估模型

    #导入测试数据
    checkset=np.loadtxt('checkset.txt',delimiter=',')
    #分割数据,获取前8个属性值及最后一位结果数据
    x1=checkset[:,0:8]
    y1=checkset[:,8]
    scores=model.evaluate(x=x1,y=y1)
    print('\n%s:%.2f%%'%(model.metrics_names[1],scores[1]*100))#输出评估结果
    

    运行程序结果

    即150次迭代后,预测的准确率为76.96%,通过本例的学习能够体现Keras的结构明确,便于理解的优点。

    参考书籍

    魏贞原--深度学习,基于Keras的Python实践

    相关文章

      网友评论

        本文标题:Keras--第一个神经网络模型

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