DL-Models / BackPropogation.py
KavyaK's picture
Upload 606 files
f4954e5
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
from sklearn.preprocessing import LabelEncoder
from tqdm import tqdm
import pickle
from BackPropogation_class import BackPropogation
import tensorflow as tf
# Load spam dataset
dataset = pd.read_csv("denv/Models/RNN/SMSSpamCollection.txt", sep='\t', names=['label', 'message'])
# Use LabelEncoder for label encoding
label_encoder = LabelEncoder()
dataset['label'] = label_encoder.fit_transform(dataset['label'])
X = dataset['message'].values
y = dataset['label'].values
# Train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Tokenize and pad the training data using a tokenizer
tokeniser = tf.keras.preprocessing.text.Tokenizer()
tokeniser.fit_on_texts(X_train)
encoded_train = tokeniser.texts_to_sequences(X_train)
max_length = 10
padded_train = tf.keras.preprocessing.sequence.pad_sequences(encoded_train, maxlen=max_length, padding='post')
# Instantiate and train the BackPropagation model
backprop_model = BackPropogation(learning_rate=0.01, epochs=100, activation_function='step')
backprop_model.fit(padded_train, y_train)
# Tokenize and pad the test data using the same tokenizer
encoded_test = tokeniser.texts_to_sequences(X_test)
padded_test = tf.keras.preprocessing.sequence.pad_sequences(encoded_test, maxlen=max_length, padding='post')
# Make predictions
backprop_preds = backprop_model.predict(padded_test)
# Evaluate the BackPropagation model
def c_report(y_true, y_pred):
print("BackPropagation Classification Report")
print(classification_report(y_true, y_pred))
acc_sc = accuracy_score(y_true, y_pred)
print(f"Accuracy : {str(round(acc_sc, 2) * 100)}")
return acc_sc
def plot_confusion_matrix(y_true, y_pred):
mtx = confusion_matrix(y_true, y_pred)
sns.heatmap(mtx, annot=True, fmt='d', linewidths=.5, cmap="Blues", cbar=False)
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.savefig("denv/Models/RNN/results/test.jpg")
# Evaluate and save
c_report(y_test, backprop_preds)
plot_confusion_matrix(y_test, backprop_preds)
# Save the BackPropagation model
with open('backprop_model.pkl', 'wb') as model_file:
pickle.dump(backprop_model, model_file)