Shafayat__

Untitled

Dec 6th, 2023
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.90 KB | None | 0 0
  1. import numpy as np
  2. from sklearn.datasets import make_blobs
  3.  
  4. def make_blocks(n_samples=20, centers=2, n_features=4):  # Change n_features to 4
  5.     x, y = make_blobs(n_samples=n_samples, centers=centers, n_features=n_features, random_state=42)
  6.     y = y[:, np.newaxis]
  7.     return x, y
  8.  
  9. def sigmoid(x):
  10.     return 1 / (1 + np.exp(-x))
  11.  
  12. def sigmoid_derivative(x):
  13.     return x * (1 - x)
  14.  
  15. input_neurons = 4
  16. hidden_neurons1 = 3  
  17. hidden_neurons2 = 2  
  18. output_neurons = 1
  19.  
  20. np.random.seed(42)
  21.  
  22. weights_input_hidden1 = np.random.rand(input_neurons, hidden_neurons1)
  23. bias_hidden1 = np.zeros((1, hidden_neurons1))
  24.  
  25. weights_hidden1_hidden2 = np.random.rand(hidden_neurons1, hidden_neurons2)
  26. bias_hidden2 = np.zeros((1, hidden_neurons2))
  27.  
  28. weights_hidden2_output = np.random.rand(hidden_neurons2, output_neurons)
  29. bias_output = np.zeros((1, output_neurons))
  30.  
  31.  
  32. learning_rate = 0.001
  33. epochs = 100
  34.  
  35.  
  36. x, y = make_blocks(n_samples=20, centers=2, n_features=4)  
  37.  
  38. for epoch in range(epochs):
  39.     # Forward pass
  40.     hidden_layer_input1 = np.dot(x, weights_input_hidden1) + bias_hidden1
  41.     hidden_layer_output1 = sigmoid(hidden_layer_input1)
  42.  
  43.     hidden_layer_input2 = np.dot(hidden_layer_output1, weights_hidden1_hidden2) + bias_hidden2
  44.     hidden_layer_output2 = sigmoid(hidden_layer_input2)
  45.  
  46.     output_layer_input = np.dot(hidden_layer_output2, weights_hidden2_output) + bias_output
  47.     predicted_output = sigmoid(output_layer_input)
  48.  
  49.     error = y - predicted_output
  50.  
  51.     output_error = error * sigmoid_derivative(predicted_output)
  52.     hidden_layer_error2 = output_error.dot(weights_hidden2_output.T) * sigmoid_derivative(hidden_layer_output2)
  53.     hidden_layer_error1 = hidden_layer_error2.dot(weights_hidden1_hidden2.T) * sigmoid_derivative(hidden_layer_output1)
  54.  
  55.     weights_hidden2_output += hidden_layer_output2.T.dot(output_error) * learning_rate
  56.     bias_output += np.sum(output_error, axis=0, keepdims=True) * learning_rate
  57.  
  58.     weights_hidden1_hidden2 += hidden_layer_output1.T.dot(hidden_layer_error2) * learning_rate
  59.     bias_hidden2 += np.sum(hidden_layer_error2, axis=0, keepdims=True) * learning_rate
  60.  
  61.     weights_input_hidden1 += x.T.dot(hidden_layer_error1) * learning_rate
  62.     bias_hidden1 += np.sum(hidden_layer_error1, axis=0, keepdims=True) * learning_rate
  63.  
  64. hidden_layer_input1 = np.dot(x, weights_input_hidden1) + bias_hidden1
  65. hidden_layer_output1 = sigmoid(hidden_layer_input1)
  66.  
  67. hidden_layer_input2 = np.dot(hidden_layer_output1, weights_hidden1_hidden2) + bias_hidden2
  68. hidden_layer_output2 = sigmoid(hidden_layer_input2)
  69.  
  70. output_layer_input = np.dot(hidden_layer_output2, weights_hidden2_output) + bias_output
  71. predicted_output = sigmoid(output_layer_input)
  72.  
  73. predicted_output = np.round(predicted_output)
  74.  
  75. accuracy = np.mean(predicted_output == y)
  76.  
  77. print("Predicted Output:")
  78. print(predicted_output)
  79. print("\nTrue Output:")
  80. print(y)
  81. print("\nAccuracy: {:.2%}".format(accuracy))
  82.  
Advertisement
Add Comment
Please, Sign In to add comment