import numpy as np
import pandas as pd
构建了一个简单的三层BP网络
three layers:input layey->hidden layer->output layer
class BPNeuralNetwork(object):
def __init__(self, input_nodes, hidden_nodes, output_nodes, learning_rate):
setting node nums of input,hidden and output layers
self.input_nodes = input_nodes
self.hidden_nodes = hidden_nodes
self.output_nodes = output_nodes
initialize weights
self.weights_input_to_hidden = np.random.normal(loc=0.,scale=0.01,size=[input_nodes,hidden_nodes])
self.weights_hidden_to_output = np.random.normal(loc=0.,scale=0.01,size=[hidden_nodes,output_nodes])
self.bias_input_to_hidden = np.zeros(shape=[1,hidden_nodes])
self.bias_hidden_to_output = np.zeros(shape=[1,output_nodes])
self.activation_function = lambda x: 1/(1+np.exp(-x))
self.learning_rate = learning_rate
train
def train(self, features, targets):
''' Train the network on batch of features and targets.
Arguments
---------
features: 2D array, each row is one data record, each column is a feature
targets: 2D array of target values
'''
n_records = fea