| 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 |
|
|
| |
| dataset = pd.read_csv("denv/Models/RNN/SMSSpamCollection.txt", sep='\t', names=['label', 'message']) |
|
|
| |
| label_encoder = LabelEncoder() |
| dataset['label'] = label_encoder.fit_transform(dataset['label']) |
|
|
| X = dataset['message'].values |
| y = dataset['label'].values |
|
|
| |
| X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) |
|
|
| |
| 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') |
|
|
| |
| backprop_model = BackPropogation(learning_rate=0.01, epochs=100, activation_function='step') |
| backprop_model.fit(padded_train, y_train) |
|
|
| |
| encoded_test = tokeniser.texts_to_sequences(X_test) |
| padded_test = tf.keras.preprocessing.sequence.pad_sequences(encoded_test, maxlen=max_length, padding='post') |
|
|
| |
| backprop_preds = backprop_model.predict(padded_test) |
|
|
| |
| 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") |
|
|
| |
| c_report(y_test, backprop_preds) |
| plot_confusion_matrix(y_test, backprop_preds) |
|
|
| |
| with open('backprop_model.pkl', 'wb') as model_file: |
| pickle.dump(backprop_model, model_file) |
|
|
|
|
|
|
|
|
| |
| |
| |