Question: 1- I am doing my project using (ANN) model. I got the result below: 2- I would like to improve the result, If you can
1- I am doing my project using (ANN) model. I got the result below:
2- I would like to improve the result, If you can add or modify the code below:
# Importing Libraries (ANN)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import sklearn
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score, cohen_kappa_score, roc_auc_score
from sklearn.preprocessing import StandardScaler
import warnings
# Load data
malData = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/MalwareData.csv", sep='|')
malData.head()
malData.shape
malData.describe()
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.hist(malData['legitimate'],20)
plt.show()
malData = malData.drop(['Name', 'md5'], axis=1) # Drop Name and md5 columns
y = malData.pop('legitimate') # Remove 'legitimate' column from features
X_train, X_test, y_train, y_test = train_test_split(malData, y, test_size=0.2, random_state=4)
# Feature Selection
clf = ExtraTreesClassifier(n_estimators=50)
clf = clf.fit(X_train, y_train)
model = SelectFromModel(clf, prefit=True)
X_train = model.transform(X_train)
X_test = model.transform(X_test)
# Standardize input features
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Build Model
model = Sequential()
model.add(Dense(32, input_dim=X_train.shape[1], activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(8, activation='sigmoid'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
model.summary()
# Fit Model
model.fit(X_train, y_train, epochs=5, batch_size=32)
# Evaluate Model
trainPred = model.predict(X_train)
trainPred = [1 if y>=0.5 else 0 for y in trainPred]
testPred = model.predict(X_test)
testPred = [1 if y>=0.5 else 0 for y in testPred]
print('Accuracy on training set:', accuracy_score(y_train, trainPred))
print('Accuracy on test set:', accuracy_score(y_test, testPred))
print('Precision:', precision_score(y_test, testPred))
print('Recall:', recall_score(y_test, testPred))
print('F1 score:', f1_score(y_test, testPred))
print('Cohen kappa:', cohen_kappa_score(y_test, testPred))
print('ROC AUC:', roc_auc_score(y_test, testPred))
print('Confusion Matrix: ', confusion_matrix(y_test, testPred))
3- also I got warning error if you can remove them
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
