In [12]:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import time
import pandas as pd
import seaborn as sns
In [ ]:
import sys
sys.path.append('../code/')
In [ ]:
!pwd
In [ ]:
from logistic_regression import LogisticRegression
from logistic_regression_batch import LogisticRegressionBatch
from hyperparameter_explorer import HyperparameterExplorer
In [ ]:
from mnist_helpers import mnist_training, mnist_testing
In [ ]:
import matplotlib.pyplot as plt
from pylab import rcParams
rcParams['figure.figsize'] = 4, 3
In [ ]:
train_X, train_y = mnist_training(shuffled=True)
test_X, test_y = mnist_testing(shuffled=True)
In [ ]:
train_X, train_y = train_X[0:3000,], train_y[0:3000, ]
In [ ]:
hyper_explorer_sgd = HyperparameterExplorer(X=train_X, y=train_y,
model=LogisticRegression,
validation_split=0.1,
score_name = '-(log loss)/N, training',
use_prev_best_weights=True,
test_X=test_X, test_y=test_y)
In [ ]:
eta0 = 0.1
max_iter = 5
batch_size = 1
delta_percent = 0.1
In [ ]:
hyper_explorer_sgd.train_model(lam=1, eta0=eta0, max_iter=max_iter,
batch_size=batch_size, progress_monitoring_freq=batch_size*10,
delta_percent=delta_percent, verbose=True)
In [13]:
hyper_explorer_sgd.models[1]
Out[13]:
In [14]:
model = hyper_explorer_sgd.models[1]
In [15]:
model.plot_test_and_train_01_loss_during_fitting()
In [17]:
model.plot_test_and_train_log_loss_during_fitting()
Out[17]:
In [18]:
hyper_explorer_sgd.train_on_whole_training_set()
In [21]:
hyper_explorer_sgd.final_model.N
Out[21]:
In [20]:
hyper_explorer_sgd.final_model.results_row()
Out[20]:
In [19]:
hyper_explorer_sgd.evaluate_test_data()
In [ ]:
hyper_explorer_sgd.train_model(lam=0, eta0=eta0, max_iter=max_iter,
batch_size=batch_size, progress_monitoring_freq=batch_size*10,
delta_percent=delta_percent, verbose=False)
In [ ]:
hyper_explorer_sgd.train_model(lam=2, eta0=eta0, max_iter=max_iter,
batch_size=batch_size, progress_monitoring_freq=batch_size*10,
delta_percent=delta_percent, verbose=False)
In [ ]:
hyper_explorer_sgd.train_model(lam=3, eta0=eta0, max_iter=max_iter,
batch_size=batch_size, progress_monitoring_freq=batch_size*10,
delta_percent=delta_percent, verbose=False)
In [ ]:
hyper_explorer_sgd.train_model(lam=5, eta0=eta0, max_iter=max_iter,
batch_size=batch_size, progress_monitoring_freq=batch_size*10,
delta_percent=delta_percent, verbose=False)
In [ ]:
hyper_explorer_sgd.train_model(lam=10, eta0=eta0, max_iter=max_iter,
batch_size=batch_size, progress_monitoring_freq=batch_size*10,
delta_percent=delta_percent, verbose=False)
In [ ]:
hyper_explorer_sgd.plot_best_fits(logx=False)
In [ ]:
hyper_explorer_sgd.summary.tail(3)
In [ ]:
assert False
In [ ]:
hyper_explorer_sgd.best('model').results.tail(3)
In [ ]:
fig, ax = plt.subplots(1, 1, figsize=(4, 3))
plot_data = hyper_explorer_sgd.best('model').results
print(plot_data.columns)
xval = '# of passes through N pts'
colors=['b', 'g']
plt.plot(plot_data[xval], plot_data['-(log loss)/N, training'], linestyle='--', marker='o', color=colors[0])
plt.plot(plot_data[xval], plot_data['-(log loss)/N, testing'], linestyle='--', marker='o', color=colors[1])
plt.legend(loc='best')
plt.xlabel(xval)
plt.ylabel('-(log loss)/N')
ax.axhline(y=0, color='k')
plt.tight_layout()
#fig.savefig("161031_Q-2-1_norm_log_loss_during_fit--no_starting_weights.pdf")
In [ ]:
hyper_explorer_sgd.train_on_whole_training_set(max_iter=10**3)
In [ ]:
hyper_explorer_sgd.evaluate_test_data()
In [ ]: