import pandas as pd
import numpy as np
import tensorflow as tf

# Data preperation
train_features = pd.read_csv('../input/train.csv')
train_target = pd.get_dummies(train_features.pop('label'))
test  = pd.read_csv('../input/test.csv')

# Tensorflow placeholders and variables
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
y_ = tf.placeholder(tf.float32, [None, 10])

# Tensorflow operations
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
init = tf.global_variables_initializer()

# Training
sess = tf.Session()
sess.run(init)

for i in range(100):
    print(i)
    index = np.random.randint(0, train_features.shape[0], [1, 100])[0]
    batch_xs = train_features.iloc[index]
    batch_ys = train_target.iloc[index]
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
  
print(W.eval(session=sess))
print(b.eval(session=sess))
out = y.eval(session=sess, feed_dict={x: train_features})
print(out)
submission_data = {'ImageId': np.arange(1, len(out) + 1), 'Label': out}