BP神经网络对鸢尾花进行分类

本文介绍使用BP神经网络对鸢尾花数据集进行分类的实验,详细讲解了BP神经网络的学习算法,包括参数初始化、前向传播、计算代价函数、反向传播和参数更新等步骤,并展示了实验结果。

题目:BP神经网络分类器
一、实验项目: BP神经网络对鸢尾花进行分类
二、实验目的:
掌握BP神经网络学习算法,利用BP神经网络进行数据分类
三、实验内容:
1、编程实现BP神经网络算法
2、建立三层BP神经网络,节点个数、参数自拟
3、选择iris-人工神经网络.txt中的一部分数据集作为训练集,通过训练集对BP神经网络的连接权重进行学习
4、记录实验数据(连接权值的变化、迭代次数、总的误差变化)
5、用剩下的数据集作为测试集,验证学习的效果
四、实验要求:
1、画出实验所用的BP神经网络的结构图
2、附上主体代码清单
3、写清楚实验步骤和实验结果
4、调节参数后,得到不同的实验数据,对数据进行分析

在这里插入图片描述
在这里插入图片描述
代码:

import numpy as np
import pandas as pd

'''
    构建一个具有1个隐藏层的神经网络,隐层的大小为5
    输入层为2个特征,输出层为2个分类
    0为第一类,1为第二类
'''
# 1.初始化参数
def initialize_parameters(n_x, n_h, n_y):
    np.random.seed(2)

    # 权重和偏置矩阵
    w1 = np.random.randn(n_h, n_x) * 0.01
    b1 = np.zeros(shape=(n_h, 1))
    w2 = np.random.randn(n_y, n_h) * 0.01
    b2 = np.zeros(shape=(n_y, 1))
    
    print('输入层与隐含层之间的初始权值:')
    print(w1)
    print('输入层与隐含层之间的初始偏置:')
    print(b1)
    print('隐含层与输出层之间的初始权值:')
    print(w2)
    print('隐含层与输出层之间的初始偏置:')
    print(b2)
    
    # 通过字典存储参数
    parameters = {
   
   'w1': w1, 'b1': b1, 'w2': w2, 'b2': b2}
    return parameters

# 2.前向传播
def forward_propagation(X, parameters):
    w1 = parameters['w1']
    b1 = parameters['b1']
    w2 = parameters['w2']
    b2 = parameters['b2']

    # 通过前向传播来计算a2
  
    z1 = np.dot(w1, X) + b1     # 这个地方需注意矩阵加法:虽然(w1*X)和b1的维度不同,但可以相加
    a1 = np.tanh(z1)            # 使用tanh作为第一层的激活函数
    z2 = np.dot(w2, a1) + b2
    a2 = 1 / (1 + np.exp(-z2))  # 使用sigmoid作为第二层的激活函数

    # 通过字典存储参数
    cache = {
   
   'z1': z1, 'a1': a1, 'z2': z2, 'a2': a2}

    return a2, cache

# 3.计算代价函数
def compute_cost(a2, Y, parameters):
    m = Y.shape[
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值