import numpy as np from data_prep import features, targets, features_test, targets_test def sigmoid(x): return 1 / (1 + np.exp(-x)) def sigmoid_prime(x): return sigmoid(x) * (1 - sigmoid(x)) np.random.seed(42) n_records, n_features = features.shape last_loss = None # Initialize weights weights = np.random.normal(scale=1 / n_features**.5, size=n_features) # Neural Network hyperparameters epochs = 1000 learnrate = 0.5 for e in range(epochs): del_w = np.zeros(weights.shape) for x, y in zip(features.values, targets): output = sigmoid(np.dot(weights, x)) error = y - output error_term = output * (1 - output) del_w += error * error_term * x weights += learnrate * del_w / n_records if e % (epochs / 10) == 0: out = sigmoid(np.dot(features, weights)) loss = np.mean((out - targets) ** 2) if last_loss and last_loss > loss:
基于numpy+pandas的单层神经网络
最新推荐文章于 2022-07-06 16:41:43 发布