In [50]:
import pandas as pd
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
In [51]:
from sklearn.preprocessing import normalize
In [52]:
df = pd.read_csv('datasets/dataset2.csv')
# Weights and bias for NN
weight = tf.Variable([1.0])
bias = tf.Variable([0.0])
In [53]:
hours = df['average_montly_hours'].astype(float).values.reshape(1,-1)
In [54]:
normalized_hours = normalize(df['average_montly_hours'].astype(float).values.reshape(1,-1), norm='l2', axis=1).reshape(-1,1)[:10]
In [55]:
left = df['left'].astype(np.float32).values
In [56]:
xs = tf.placeholder(tf.float32)
ys = tf.placeholder(tf.float32)
xlosses = []
losses = []
In [57]:
output = ( weight * xs )
diff = output - ys
cost = tf.square(diff)
grad = tf.reduce_sum(((weight * xs) - ys ) * xs)
optimized_weight = weight - 0.0001 * grad
reduced_cost = tf.reduce_mean(cost)
In [58]:
# Start the session
sess = tf.Session()
sess.run(tf.global_variables_initializer())
In [20]:
for i in range(1000):
if i%10 == 0:
# print ''
# print 'Step: ', i
# print 'Gradient: ', sess.run([grad1, grad], {xs: normalized_hours, ys: left})
# print 'Weight: ' , sess.run([weight])[0][0]
# print 'Bias: ', sess.run([bias])[0][0]
# print 'Loss: ', sess.run([reduced_cost], {xs: normalized_hours, ys: left})[0]
# print 'Optimized Weight: ', sess.run([optimized_weight], {xs: normalized_hours, ys: left})[0]
losses.append(sess.run([reduced_cost], {xs: normalized_hours, ys: left})[0])
sess.run(tf.assign(weight, sess.run([optimized_weight], {xs: normalized_hours, ys: left})[0]))
In [21]:
plt.plot(np.arange(100.0), losses)
Out[21]:
In [22]:
plt.show()
In [62]:
sess.close()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
In [60]:
for i in range(100):
xlosses.append(sess.run([reduced_cost], {xs: hours, ys: left})[0])
sess.run(tf.assign(weight, sess.run([optimized_weight], {xs: hours, ys: left})[0]))
In [61]:
plt.plot(np.arange(100.0), xlosses)
plt.show()