added codes

This commit is contained in:
mhjensen
2020-05-29 11:39:02 +02:00
parent a341783e27
commit 67ade4e63c
18 changed files with 76040 additions and 43 deletions
+95
View File
@@ -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)