In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from main.neural_networks.feed_forward_network import NeuralNetwork, scale_df_to_nn

%matplotlib inline

In [2]:
train = pd.read_csv('../../data_sets/mnist_train.csv', header=None)
test = pd.read_csv('../../data_sets/mnist_test.csv', header=None)
train[:5]


Out[2]:
0 1 2 3 4 5 6 7 8 9 ... 775 776 777 778 779 780 781 782 783 784
0 5 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
2 4 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
4 9 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0

5 rows × 785 columns


In [3]:
train_x = train.ix[:,1:]
train_y = train.ix[:,0]
train_y = pd.get_dummies(train_y)
test_x = test.ix[:,1:]
test_y = test.ix[:,0]
test_y = pd.get_dummies(test_y)

train_x = scale_df_to_nn(matrix=train_x)
train_y = scale_df_to_nn(matrix=train_y)
test_x = scale_df_to_nn(matrix=test_x)
test_y = scale_df_to_nn(matrix=test_y)

In [4]:
net = NeuralNetwork(input_nodes=784, output_nodes=10, hidden_layers=[400], learning_rate=.2)
net.train(train_X=train_x, train_Y=train_y, epochs=3)


100% (180000 of 180000) |#################| Elapsed Time: 0:10:34 Time: 0:10:34

In [5]:
accuracy, output_arrays, score_card = net.accuracy(test_X=test_x, test_Y=test_y)

In [32]:
np.argmax(net.query_element(inputs_list=test_x.iloc[4]))
np.argmax(test_y.iloc[4])


Out[32]:
4

In [6]:
accuracy


Out[6]:
0.9673

In [ ]: