数据挖掘:实验六 神经网络

代码地址:Github

实验目的和要求

通过在Python中的实例应用,分析神经网络的基本原理,加深神经网络前向反馈的理解,并掌握将算法应用于实际的方法、步骤。

实验内容和原理

  1. 在Python中完成神经网络的前向反馈的基本原理。
  2. 在Python中完成神经网络的后向传播的基本原理,完成参数学习。

操作方法和实验步骤

实现神经网络的前向反馈过程

请下载数据给定X_data,y_label,Theta1,Theta2,这是一个输入节点个数为400,隐藏层节点个数为25,输出节点个数为10的神经网络的数据,请利用给定的参数值Theta1,Theta2,计算该神经网络的预测值,并与给定的标签y_label值作比较,给出这组参数下神经网络的分类准确率。

实验结果和分析

def softmax(x):
    m = np.max(x)
    return np.exp(x - m) / np.sum(np.exp(x - m))  # 防止出现 overflow


def feedforward(weights, x):
    return softmax(np.dot(np.concatenate((x, np.ones((x.shape[0], 1))), axis=1), weights.T))


def score(x, y, theta1, theta2):
    x_hidden_data = feedforward(theta1, x)
    pred = feedforward(theta2, x_hidden_data)
    s = 0.0
    for i in range(pred.shape[0]):
        if y[i] == np.argmax(pred[i]) + 1:
            s += 1
    return s / pred.shape[0]
image-20221102094620016