Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- from sklearn.datasets import make_blobs
- def make_blocks(n_samples=20, centers=2, n_features=3):
- x, y = make_blobs(n_samples=n_samples, centers=centers, n_features=n_features, random_state=42)
- y = y[:, np.newaxis] # Adding a new axis to make it compatible with the network architecture
- return x, y
- def sigmoid(x):
- return 1 / (1 + np.exp(-x))
- def sigmoid_derivative(x):
- return x * (1 - x)
- input_neurons = 3
- hidden_neurons = 3
- output_neurons = 1
- np.random.seed(42)
- weights_input_hidden = np.random.rand(input_neurons, hidden_neurons)
- bias_hidden = np.zeros((1, hidden_neurons))
- weights_hidden_output = np.random.rand(hidden_neurons, output_neurons)
- bias_output = np.zeros((1, output_neurons))
- learning_rate = 0.01
- epochs = 100
- x, y = make_blocks(n_samples=20, centers=2, n_features=3)
- for epoch in range(epochs):
- hidden_layer_input = np.dot(x, weights_input_hidden) + bias_hidden
- hidden_layer_output = sigmoid(hidden_layer_input)
- output_layer_input = np.dot(hidden_layer_output, weights_hidden_output) + bias_output
- predicted_output = sigmoid(output_layer_input)
- error = y - predicted_output
- output_error = error * sigmoid_derivative(predicted_output)
- hidden_layer_error = output_error.dot(weights_hidden_output.T) * sigmoid_derivative(hidden_layer_output)
- weights_hidden_output += hidden_layer_output.T.dot(output_error) * learning_rate
- bias_output += np.sum(output_error, axis=0, keepdims=True) * learning_rate
- weights_input_hidden += x.T.dot(hidden_layer_error) * learning_rate
- bias_hidden += np.sum(hidden_layer_error, axis=0, keepdims=True) * learning_rate
- hidden_layer_input = np.dot(x, weights_input_hidden) + bias_hidden
- hidden_layer_output = sigmoid(hidden_layer_input)
- output_layer_input = np.dot(hidden_layer_output, weights_hidden_output) + bias_output
- predicted_output = sigmoid(output_layer_input)
- predicted_output = np.round(predicted_output)
- accuracy = np.mean(predicted_output == y)
- print("Predicted Output:")
- print(predicted_output)
- print("\nTrue Output:")
- print(y)
- print("\nAccuracy: {:.2%}".format(accuracy))
Advertisement
Add Comment
Please, Sign In to add comment