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=4): # Change n_features to 4
- x, y = make_blobs(n_samples=n_samples, centers=centers, n_features=n_features, random_state=42)
- y = y[:, np.newaxis]
- return x, y
- def sigmoid(x):
- return 1 / (1 + np.exp(-x))
- def sigmoid_derivative(x):
- return x * (1 - x)
- input_neurons = 4
- hidden_neurons1 = 3
- hidden_neurons2 = 2
- output_neurons = 1
- np.random.seed(42)
- weights_input_hidden1 = np.random.rand(input_neurons, hidden_neurons1)
- bias_hidden1 = np.zeros((1, hidden_neurons1))
- weights_hidden1_hidden2 = np.random.rand(hidden_neurons1, hidden_neurons2)
- bias_hidden2 = np.zeros((1, hidden_neurons2))
- weights_hidden2_output = np.random.rand(hidden_neurons2, output_neurons)
- bias_output = np.zeros((1, output_neurons))
- learning_rate = 0.001
- epochs = 100
- x, y = make_blocks(n_samples=20, centers=2, n_features=4)
- for epoch in range(epochs):
- # Forward pass
- hidden_layer_input1 = np.dot(x, weights_input_hidden1) + bias_hidden1
- hidden_layer_output1 = sigmoid(hidden_layer_input1)
- hidden_layer_input2 = np.dot(hidden_layer_output1, weights_hidden1_hidden2) + bias_hidden2
- hidden_layer_output2 = sigmoid(hidden_layer_input2)
- output_layer_input = np.dot(hidden_layer_output2, weights_hidden2_output) + bias_output
- predicted_output = sigmoid(output_layer_input)
- error = y - predicted_output
- output_error = error * sigmoid_derivative(predicted_output)
- hidden_layer_error2 = output_error.dot(weights_hidden2_output.T) * sigmoid_derivative(hidden_layer_output2)
- hidden_layer_error1 = hidden_layer_error2.dot(weights_hidden1_hidden2.T) * sigmoid_derivative(hidden_layer_output1)
- weights_hidden2_output += hidden_layer_output2.T.dot(output_error) * learning_rate
- bias_output += np.sum(output_error, axis=0, keepdims=True) * learning_rate
- weights_hidden1_hidden2 += hidden_layer_output1.T.dot(hidden_layer_error2) * learning_rate
- bias_hidden2 += np.sum(hidden_layer_error2, axis=0, keepdims=True) * learning_rate
- weights_input_hidden1 += x.T.dot(hidden_layer_error1) * learning_rate
- bias_hidden1 += np.sum(hidden_layer_error1, axis=0, keepdims=True) * learning_rate
- hidden_layer_input1 = np.dot(x, weights_input_hidden1) + bias_hidden1
- hidden_layer_output1 = sigmoid(hidden_layer_input1)
- hidden_layer_input2 = np.dot(hidden_layer_output1, weights_hidden1_hidden2) + bias_hidden2
- hidden_layer_output2 = sigmoid(hidden_layer_input2)
- output_layer_input = np.dot(hidden_layer_output2, weights_hidden2_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