多层感知机-印第安人糖尿病诊断-基于keras的python学习笔记(一)

函数解释

np.random.seed()函数,每次运行代码时设置相同的seed,则每次生成的随机数也相同,如果不设置seed,则每次生成的随机数都会不一样。例如:
多层感知机-印第安人糖尿病诊断-基于keras的python学习笔记(一)_第1张图片
本例子:
数据集为8个属性和输出结果一共9列,为二分类问题(糖尿病为1或非糖尿病为0)

输出层(1个输出)
隐藏层(8个神经元)
隐藏层(12个神经元)
可视层(8个输入)

    from keras.models import Sequential
    from keras.layers import Dense
    import numpy as np
    # 设定随机数种子
    np.random.seed(7)
    
    # 导入数据
    dataset = np.loadtxt('pima-indians-diabetes.csv', delimiter=',')
    # 分割输入x和输出Y   x = dataset[:, 0 : 8]  中0 : 8为第0列到8-1=7列
    x = dataset[:, 0 : 8]
    Y = dataset[:, 8]
    
    # 创建模型
    model = Sequential()
    #relu为激活函数
    model.add(Dense(12, input_dim=8, activation='relu'))
    model.add(Dense(8, activation='relu'))
    #==***sigmoid为激活函数,二分类一般用这个***==
    model.add(Dense(1, activation='sigmoid'))
        
    # 编译模型     
    #使用有效的梯度下降算法adam作为优化器
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    # 训练模型
    #epochs 迭代次数   batch_size 批数
    model.fit(x=x, y=Y, epochs=150, batch_size=10)
    
    # 评估模型
    scores = model.evaluate(x=x, y=Y)
    print('\n%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))

激活函数:
sigmoid: 一般用于二分类
sgn: 单层神经网络
relu:多层神经网络,更容易收敛,预测效果好

你可能感兴趣的:(深度学习)