In train_predict.py there is a mix up with labels. What should be "Actual" is shown as "Predicted" and vice versa:
# Plot graph: predicted VS actual
plt.subplot(111)
plt.plot(predicted_raw, label='Actual')
plt.plot(y_test_raw, label='Predicted')
plt.legend()
plt.show()