added codes
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
import warnings
|
||||
import itertools
|
||||
from PIL import Image
|
||||
from sklearn.ensemble import RandomForestClassifier
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score,roc_curve,auc
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
warnings.filterwarnings("ignore")
|
||||
|
||||
# Reading data using PANDA
|
||||
data = pd.read_csv("pulsar_stars.csv")
|
||||
data.head()
|
||||
#DATA
|
||||
targets = data["target_class"]
|
||||
features = data.drop("target_class", axis = 1)
|
||||
np.random.seed(2018)
|
||||
#Split data
|
||||
X_train, X_test, y_train, y_test = train_test_split(features, targets, test_size = 0.2, random_state = 66)
|
||||
|
||||
|
||||
# Define the learning rate, hyperparameter using NUMPY
|
||||
eta_vals = np.logspace(-5, 1, 7)
|
||||
lmbd_vals = np.logspace(-5, 1, 7)
|
||||
n_hidden_neurons = 50
|
||||
epochs = 100
|
||||
|
||||
# Use scikit learn for neural network
|
||||
DNN_scikit = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
|
||||
for i, eta in enumerate(eta_vals):
|
||||
for j, lmbd in enumerate(lmbd_vals):
|
||||
dnn = MLPClassifier(hidden_layer_sizes=(n_hidden_neurons), activation='logistic',
|
||||
alpha=lmbd, learning_rate_init=eta, max_iter=epochs, solver='adam')
|
||||
dnn.fit(X_train, y_train)
|
||||
DNN_scikit[i][j] = dnn
|
||||
print("Learning rate = ", eta)
|
||||
print("Lambda = ", lmbd)
|
||||
print("Accuracy score on test set: ", dnn.score(X_test, y_test))
|
||||
print()
|
||||
|
||||
|
||||
#Plot the accuracy as function of learning rate and hyperparameter
|
||||
sns.set()
|
||||
train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
|
||||
test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
|
||||
|
||||
for i in range(len(eta_vals)):
|
||||
for j in range(len(lmbd_vals)):
|
||||
dnn = DNN_scikit[i][j]
|
||||
train_pred = dnn.predict(X_train)
|
||||
test_pred = dnn.predict(X_test)
|
||||
train_accuracy[i][j] = accuracy_score(y_train, train_pred)
|
||||
test_accuracy[i][j] = accuracy_score(y_test, test_pred)
|
||||
|
||||
fig, ax = plt.subplots(figsize = (10, 10))
|
||||
sns.heatmap(train_accuracy, annot=True,annot_kws={"size": 18}, ax=ax, cmap="viridis")
|
||||
ax.set_title("Training Accuracy",fontsize=18)
|
||||
ax.set_ylabel("$\eta$",fontsize=18)
|
||||
ax.set_yticklabels(eta_vals)
|
||||
ax.set_xlabel("$\lambda$",fontsize=18)
|
||||
ax.set_xticklabels(lmbd_vals)
|
||||
plt.tick_params(labelsize=18)
|
||||
|
||||
fig, ax = plt.subplots(figsize = (10, 10))
|
||||
sns.heatmap(test_accuracy, annot=True,annot_kws={"size": 18}, ax=ax, cmap="viridis")
|
||||
ax.set_title("Test Accuracy",fontsize=18)
|
||||
ax.set_ylabel("$\eta$",fontsize=18)
|
||||
ax.set_yticklabels(eta_vals)
|
||||
ax.set_xlabel("$\lambda$",fontsize=18)
|
||||
ax.set_xticklabels(lmbd_vals)
|
||||
plt.tick_params(labelsize=18)
|
||||
#plt.show()
|
||||
|
||||
#Plot confusion matrix at optimal values of learning rate and hyperameter
|
||||
dnn = MLPClassifier(hidden_layer_sizes=(n_hidden_neurons), activation='logistic',
|
||||
|
||||
alpha=0.001, learning_rate_init=0.001, max_iter=epochs, solver='adam')
|
||||
dnn.fit(X_train,y_train)
|
||||
y_pred=dnn.predict(X_test)
|
||||
fig1, ax = plt.subplots(figsize = (13,10))
|
||||
sns.heatmap(confusion_matrix(y_test,y_pred),annot=True,fmt = "d",linecolor="k",linewidths=3)
|
||||
ax.set_xlabel('True label',fontsize=18)
|
||||
ax.set_ylabel('Predicted label',fontsize=18)
|
||||
ax.set_title("CONFUSION MATRIX",fontsize=20)
|
||||
plt.tick_params(labelsize=18)
|
||||
plt.show()
|
||||
|
||||
# Feature importance -->weights
|
||||
coef=dnn.coefs_[0]
|
||||
print (coef)
|
||||
|
||||
Reference in New Issue
Block a user