Week 6
Week 6
ipynb - Colab
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.metrics import precision_score, recall_score, f1_score, confusion_matrix, accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.linear_model import Perceptron
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
def relu(x):
return np.maximum(0, x)
def relu_derivative(x):
return np.where(x > 0, 1, 0)
df = pd.read_csv('students_result.csv')
df = df.sample(frac=1)
df['Result'] = df['Result'].apply(lambda x: 1 if x == 'Pass' else 0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
input_size = X_train.shape[1]
hidden_layer_size = input_size + 2
output_size = 1
learning_rate = 0.01
epochs = 1000
def forward_propagation(X):
hidden_layer_input = np.dot(X, weights_input_hidden) + bias_hidden
hidden_layer_activation = relu(hidden_layer_input)
output layer input = np dot(hidden layer activation weights hidden output) + bias output
https://colab.research.google.com/drive/1MR4fMU8-CDeQtzEnAlO1fNjnjGZ7rUOr#scrollTo=5Ovd6SNxO8Gb&printMode=true 1/4
10/7/24, 11:53 PM Untitled5.ipynb - Colab
output_layer_input np.dot(hidden_layer_activation, weights_hidden_output) + bias_output
output_layer_activation = sigmoid(output_layer_input)
return hidden_layer_activation, output_layer_activation
error = y - output_layer_activation
d_output = error * sigmoid_derivative(output_layer_activation)
error_hidden_layer = d_output.dot(weights_hidden_output.T)
d_hidden_layer = error_hidden_layer * relu_derivative(hidden_layer_activation)
_, y_pred_custom = forward_propagation(X_test)
y_pred_custom = np.round(y_pred_custom)
models = {
"Decision Tree": DecisionTreeClassifier(),
"KNN": KNeighborsClassifier(),
"SVM": SVC(),
"Perceptron": Perceptron()
}
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(cm)
print("\n" + "-"*50 + "\n")
--------------------------------------------------
--------------------------------------------------
Model: KNN
Accuracy: 95.25%
Precision: 0.92
Recall: 1.00
F1-score: 0.96
Confusion Matrix:
[[174 19]
[ 0 207]]
--------------------------------------------------
Model: SVM
Accuracy: 97.00%
Precision: 0.96
Recall: 0.99
F1-score: 0.97
Confusion Matrix:
[[184 9]
[ 3 204]]
--------------------------------------------------
Model: Perceptron
Accuracy: 86.25%
Precision: 0.87
Recall: 0.86
https://colab.research.google.com/drive/1MR4fMU8-CDeQtzEnAlO1fNjnjGZ7rUOr#scrollTo=5Ovd6SNxO8Gb&printMode=true 3/4
10/7/24, 11:53 PM Untitled5.ipynb - Colab
F1-score: 0.87
Confusion Matrix:
[[166 27]
[ 28 179]]
--------------------------------------------------
https://colab.research.google.com/drive/1MR4fMU8-CDeQtzEnAlO1fNjnjGZ7rUOr#scrollTo=5Ovd6SNxO8Gb&printMode=true 4/4